Skip to content

Docker

安装

shell
# 桌面系统直接安装 Docker Desktop
https://www.docker.com/
# Docker Desktop 配置镜像源
# 打开 Docker Desktop -- 点击右上角的齿轮图标 -- 选择 "Docker Engine" -- 在 JSON 配置中添加镜像源 -- 点击 "Apply & Restart" 以应用更改


# 阿里云docker安装
https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker


# Linux服务器安装
# 1.检查centos内核版本,必须是3.10及以上
uname -r
# 升级内核(可选)
yum update

# 2.安装docker
# https://docs.docker.com/engine/install/centos/
# 旧版本(过时)
# yum -y install docker

# 卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
# 在新主机上首次安装 Docker Engine 之前,需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。
# 设置存储库
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装 Docker 引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 3.启动docker
systemctl start docker
# 4.开机启动docker
systemctl enable docker
# 5.停止docker
systemctl stop docker
# 6.查看版本
docker -v


# 设置镜像源
# 1.临时使用
# 直接拿镜像域名拼接上官方镜像名
docker pull docker-0.unsee.tech/redis:6.2

## 2.长久有效
# 修改文件/etc/docker/daemon.json(如果不存在则需要创建创建,注意不要写入中文,要带https://),并重启服务。
# 创建目录
sudo mkdir -p /etc/docker
# 写入配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker-0.unsee.tech",
        "https://docker-cf.registry.cyou",
        "https://docker.1panel.live"
    ]
}
EOF
# 重启docker服务
sudo systemctl daemon-reload && sudo systemctl restart docker

常用命令

shell
# 镜像命令
# 1.搜索(我们经常去https://hub.docker.com上检索镜像的详细信息)
# 指定镜像仓库 eg: docker search docker-0.unsee.tech/mysql
docker search 关键字

# 2.拉取(:tag是可选的,tag表示标签,多为软件的版本,默认是latest最新版本)
# 指定镜像仓库 eg: docker search docker-0.unsee.tech/mysql:5.7
docker pull 镜像名:tag

# 3.列表(查看所有本地镜像)
docker images
# 4.删除
docker rmi image-id

# 容器命令
# 1.运行
# -d 后台运行
# -p 指定端口映射
# -e 设置参数
# -v 目录挂载 
# --name 自定义容器名
# image-name 指定镜像模版
docker run -d -p 主机端口:容器内部端口 --name container-name image-name
# 2.列表
# 查看所有容器
docker ps -a
# 查看所有运行中的容器
docker ps
# 3.启动
docker start container-id
# 4.停止
docker stop container-id
# 5.删除
docker rm container-id

# 其它命令
# 1.查看日志
# -f 跟踪日志输出
# -t 显示时间戳
docker logs container-id/container-name
# 2.进入容器
# 进入容器后开启一个新的终端,可以在里面操作
docker exec -it container-id/container-name bash
# 3.退出容器
exit
# 4.重启容器
docker restart container-id/container-name
# 5.查看版本
docker -v

mysql

shell
# 拉取指定版本5.7
# MYSQL_ROOT_PASSWORD=1234表示root的初始密码
docker pull mysql:5.7
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -e TZ=Asia/Shanghai --name mymysql mysql:5.7

redis

shell
# --requirepass 1234 设置密码
docker pull redis:6.2
docker run -itd -p 6379:6379 --name myredis redis:6.2 --requirepass 1234

# 连接redis客户端
docker exec -it myredis bash
redis-cli

rabbitmq

shell
docker pull rabbitmq:management
docker run -d --name myrabbitmq -p 15672:15672 -p 5672:5672 rabbitmq:management

elasticsearch

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.2
docker run -d --name myelasticsearch -p 9200:9200 -p 9300:9300 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.2

springboot项目

创建Dockerfile文件

dockerfile
FROM java:8
EXPOSE 8089

VOLUME /tmp

ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localtime && echo "{TZ}" > /etc/timezone

ADD blog-web-0.0.1-SNAPSHOT.jar  /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

# 说明:
# FROM java:8 表示基于jdk8环境;
# EXPOSE 8089 表示对外暴露的端口是8086
# VOLUME /tmp 表示挂载到/tmp目录
# ADD blog-web-0.0.1-SNAPSHOT.jar  /app.jar 表示把jar包复制到镜像服务里面的根目录,并改名为app.jar
# RUN bash -c 'touch /app.jar' 表示执行创建app.jar
# ENTRYPOINT ["java","-jar","/app.jar"] 表示执行启动命令java -jar

Dockerfile同级目录下执行

shell
# 构建镜像,注意后面有个点
docker build -t blog-web .
# 启动容器
docker run -p 8089:8089 --name blog-web -d -e JAVA_OPTS="-Xms1024m -Xmx1024m" blog-web
# 查看日志
docker logs -f blog-web