1、安装Docker:
-
安装
Docker
官方yum
源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
安装
Docker
:yum install -y docker-ce
-
设置
Docker
开机自启动:systemctl enable docker
-
启动
Docker
服务:systemctl start docker
-
验证
Docker
是否安装成功:docker version
-
修改Docker镜像仓库:
# vim /etc/docker/daemon.json { "registry-mirrors": ["https://d3mf5ikh.mirror.aliyuncs.com/"] }
-
查看
Docker
的详细信息:docker info
2、镜像操作:
-
下载镜像:
docker pull [image_name]
-
查看本地已下载的镜像:
docker images
-
删除镜像:
docker rmi [image_id] docker rmi [image_id]:tags # 删除指定版本号的镜像
3、容器操作:
-
启动容器:
docker run --name [container_name] -d -p [宿主机port:容器port] -v [宿主机磁盘目录:容器目录] [image_name] # 示例如下: docker run --name nginx -d -p 8080:80 -v /data:/usr/share/nginx/html nginx # -p : 表示端口映射,将容器中的端口映射到宿主机上的指定端口。 # -v : 表示目录挂载,将容器内的指定目录挂载到宿主机指定目录下。 # --link: 表示此容器需要连接另一个容器。
-
查看已启动的容器:
docker ps -al
-
停止容器:
docker stop [container_id]
-
删除容器:
docker rm [container_id] # 需要先stop容器 docker rm -f [container_id] # 强制直接删除容器
-
进入容器内部:
docker exec -it [container_id] /bin/bash # i : 表示标注你输入 # t : 表示开启一个Terminal终端
-
查看容器详细信息:
docker inspect [container_id]
4、网络操作:
-
显示已创建的所有网络:
docker network ls
-
不指定网络驱动时默认创建的
bridge
网络:docker network create [network_name]
-
查看指定网络的内部信息:
docker network inspect [network_name]
-
删除指定网络:
docker network rm [network_name]
5、Dockerfile编写:
-
Dockerfile
编写规则说明:# 基础镜像,如果本地没有,会从远程仓库拉取,尽量使用官方的image作为base image FROM centos # 镜像的制作人 MAINTAINER "zjg_num01@163.com" # 一条RUN就是一个分层,对于复杂的RUN命令。避免无用的分层,多条命令用&&符连接并用反斜线换行,合成一条命令 RUN yum update && install -y vim Python-dev # 类似于linux的cd命令,改变工作目录,没有目录会自动创建,尽量使用绝对路径,不要用 Run cd 增加分层 WORKDIR /root # 将本地文件添加到镜像根目录并自动解压 ADD test.tar.gz / # 将本地文件拷贝到镜像根目录,等同于上述ADD效果,没有解压功能 COPY hello / # ADD与COPY的区别,优先使用COPY命令,ADD除了COPY功能还有解压功能 # 容器对外需要暴露的端口号 EXPOSE 80 # 定义环境变量 ENV MYSQL_VERSION 5.6
-
编写一个简单的
Dockerfile
示例:FROM nginx:1.17.6 ENV LANG en_US.UTF-8 ADD index.html /usr/share/nginx/html EXPOSE 80 EXPOSE 443
-
通过
Dockerfile
构建Docker
镜像:docker build -t nginx:0.0.1 . # -f : 可以指定要使用的Dockerfile路径. # -m : 可以设置内存最大值. # -t : 可以指定镜像名称及版本. # . : 指定构建镜像的上下文路径,docker build 会将这个路径下所有的文件都打包上传给Docker引擎
-
启动镜像:
docker run -d -p 8080:80 nginx:0.0.1
6、DockerHub:
-
登录
DockerHub
:# 注册DockerHub后,登录DockerHub ,注意登录时的username是注册的Docker ID docker login
-
标记本地镜像:
# 标记本地镜像,将本地镜像打tag,也可以理解为重命名 docker tag [source_images_name]:[source_image_tag] [registryhost]/[image_name]:[image_tag] # source_images_name: 表示原始镜像名称. # source_image_tag: 表示原始镜像版本,可选参数. # registryhost:表示仓库名称,可选参数. # image_name:表示仓库内的镜像名称. # image_tag: 表示仓库内的镜像版本,可选参数.
-
推送镜像到
DockerHub
:docker push [registryhost]/[image_name]:[image_tag]
-
从
DockerHub
中下载镜像:docker pull [registryhost]/[image_name]:[image_tag]
7、DockerCompose部署Spring Boot应用:
-
安装
DockerCompose
:-
下载
docker-compose
二进制执行文件:sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
-
配置
docker-compose
二进制文件可执行权限:sudo chmod +x /usr/local/bin/docker-compose
-
测试docker-compose是否安装成功:
docker-compose version
-
-
编译
Spring Boot
:cd pig/ # 进入应用根目录下 mvn clean package -Dmaven.test.skip=true # 通过maven编译打包
-
编写
Spring Boot
应用的Dockerfile
:FROM java:8 WORKDIR /gateway-service # 相对于父模块的docker-compose文件的相对路径,而不是相对于Dockerfile的相对路径 ADD ./gateway-service/target/gateway-service.jar ./ # 相对于Dockerfile的相对路径 # ADD target/gateway-service.jar ./ EXPOSE 9999 RUN java -jar gateway-servcice.jar
-
编写
Spring Boot
应用docker-compose.yaml
:version: "3" services: # gateway-sertvice gateway-service: build: context: ./ dockerfile: ./gateway-service/Dockerfile environment: - JAVA_OPTS=-Xmx512M -Dspring.profiles.active=dev image: microservice/gateway-service:v1.0 container_name: gateway-service hostname: gateway restart: always ports: - "9090:9090" volumes: - /usr/lcoal/dev/microservice/logs:/home/portal/web/logs/
-
通过
docker-compose
构建镜像:docker-compose build . # 说明: # 既然可以通过docker build可以直接操作Dockerfile文件构建镜像,为什么还要通过docker-compose build? # docker-compose.yaml中可以实现模块下多个微服务的镜像构建,通过指定每个微服务Dockerfile位置即可 # Dockerfile用于模块下单个微服务的镜像构建
-
通过
docker-compose
启动容器:docker-compose up -d
-
通过
docker-compose
查看容器日志:docker-compose logs -f
-
通过
docker-compose
停止容器:docker-compose stop # 只停止容器工作,可以通过docker-compose start 再次启动 docker-compose down # 停止容器、删除镜像、删除网络及挂载