该篇文章每天都在持续更新中,欢迎各位大神阅读并指点…
一、简介与概述
官网地址:https://docs.docker.com/ 和https://www.docker.com/
1、为什么要使用docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。虚拟化容器技术 ,主要解决我们开发环境配置迁移的问题。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
2、使用docker的好处
- 简化配置 安装创建非常的方便
- 代码流水线(Code Pipeline)管理 传统项目部署可能需要经过很多环节,容易产生版本的依赖冲突问题,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少
- Devops 开发与运维一体化减少沟通的成本 (docker或者是k8s实现)
- 虚拟技术 快速部署
- 弹性扩容
3、docker的应用场景
1.Web 应用的自动化打包和发布。
2.自动化测试和持续集成、发布。
3.在服务型环境中部署和调整数据库或其他的后台应用。
4.从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
4、容器与虚拟机区别
1、虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器
2、Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算
3、Docker所用的资源更少,性能更高。同样一个物理机器Docker运行的镜像数量远多于虚拟机的数量
4、虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。
5、虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。
容器与虚拟机区别的总结如表:
特性 | 容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级别 |
硬盘使用 | 一般为MB | 一般GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 完全隔离 | 完全隔离 |
二、Docker安装
Docker 要求 CentOS7 系统的内核版本在 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
1、通过 uname -r 命令查看你当前的内核版本
2、 使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update
3、 如果安装过旧版本的话,卸载旧版本
yum remove docker docker-common docker-selinux docker-engine
4、 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort –r
7、 安装docker
sudo yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
8、 启动并加入开机启动
systemctl start docker
systemctl enable docker
9、 验证安装是否成功,如下图:(有client和service两部分表示docker安装启动都成功了)
三、Docker常用命令
- docker --help 帮助命令
- docker --version docker版本
docker images
- docker images 查看本地镜像文件
属性说明: - REPOSITORY 存储库名称
- Tag 镜像的标签 不写版本号码 默认下载最新latest镜像
- IMAGE ID 镜像id
- CREATED 创建时间
- SIZE 大小
参数说明 - docker images -a 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- docker images -q —只显示镜像的id
- docker images --digests —显示镜像的摘要信息
- docker images --no-trunc —显示完整镜像信息
- docker rmi tomcat 删除镜像文件
docker search
eg:docker search mysql 展示所有mysql的镜像文件
docker search -s 30 mysql 列出点赞数超过30以上。
latest 表示为最新的镜像文件 mysql8.0版本
docker pull
latest -----tag 最新版本的镜像文件
eg:docker pull nginx:latest
- 默认的情况下 下载最新版本的镜像 可以通过https://hub.docker.com/_/nginxtab=tags&page=1&ordering=last_updated
查看容器信息
- Docker ps 获取到容器(正在运行的)
- Docker ps -a 获取到容器(所有)
- docker inspect 容器id --查看容器详细信息
- docker ps -l 查询最后一次创建的容器
容器的导入导出
- 导出容器
如果要导出本地某个容器,可以使用 docker export 命令。
例如:导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
docker export 1e560fca3906 > ubuntu.tar
- 导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
此外,也可以通过指定 URL 或者某个目录来导入,例如:
docker import http://example.com/exampleimage.tgz example/imagerepo
运行容器
- docker run -i (保持容器一直运行)
- docker run -t(给容器一个伪终端)
- docker run -d(后台运行,不直接进入容器)
- docker run --name=tomcat9.2(给启动容器起名字)
- docker run -p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器) 【参数】(加入容器初始化命令)
- docker run -it 启动的容器有两个特点 一创建就进入容器 exit退出容器 容器就会停止运行 —交互式容器
- docker run -id 创建的容器 docker exec -it tomcat9.2(–name起的名称)进入容器 exit退出容器 容器不会停止运行 —守护式容器
- docker exec -it [CONTAINER ID] bash 进入容器,有的镜像没有bash命令,可以用对应的shell,比如sh
docker exec -it [CONTAINER ID] sh - docker container prune 清理掉所有处于终止状态的容器
- docker port 容器id : 查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号
- docker logs -f 容器id : docker logs [ID或者名字] 可以查看容器内部的运行日志。
- docker top 容器id : 查看容器内部运行的进程
- docker --network:连接容器,例:
运行一个容器并连接到新建的 test-net 网络:
docker run -itd --name test1 --network test-net ubuntu /bin/bash
打开新的终端,再运行一个容器并加入到 test-net 网络:
docker run -itd --name test2 --network test-net ubuntu /bin/bash
进入在test1 容器,输入以下命令:
同理在 test2 容器也会成功连接到:
这样,test1 容器和 test2 容器建立了互联关系。
如果你有多个容器之间需要互相连接,推荐使用 Docker Compose,后面会介绍。
四、 docker run 运行原理
docker run mayikt
简单描述:首先会先从本地获取获取mayikt镜像文件,如果本地没有该镜像文件则会去
阿里云仓库查找该镜像文件,如果阿里云仓库也没有该镜像文件,则会报错找不到
镜像文件。
获取到镜像文件之后直接运行。
详细描述:
1.docker在本机缓存中 mayikt镜像文件,如果本地存在该镜像文件
,则以该镜像文件作为模板在容器中运行。
2.如果本地缓存中,没有mayikt镜像文件 则会从dockerhub 或者加速镜像中
查找,如果查找不到的话,则返回错误找不到该镜像。
3. 如果能够查找到该镜像,则以该镜像作为模板运行。
每个容器都有自己独立的网络 ip信息 运行成功 就是一个轻量级linux操作系统
五、 docker快速入门
1、Docker三大核心概念
镜像、容器、仓库是docker的三大核心概念。
- 镜像文件(image)
简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息,比如:redis镜像、mysql镜等。每个镜像文件都有自己独立ip信息(轻量级的linux服务器 虚拟化,比如:镜像就是类 容器就是实例对象)
镜像的来源方式:
(1)自己做镜像 比如(自己开发微服务项目)
(2) 拉取别人制作好的镜像, 例如 nginx、mysql、redis等。 - 容器(container)
容器就是镜像运行的实例,容器状态分为:初创建、运行、停止、暂停、删除, 一个镜像可以创建多个不同的容器。 - 仓库(repository)
仓库就是存放一个个镜像的地方,下载镜像就是从仓库去下载。类似于maven中的中
央仓库一样。
Docker 公开仓库地址:https://hub.docker.com/ - 宿主机
当前操作系统
简单概述他们之间的关系如下图:
- 需要制作镜像文件(如:springboot项目,类似于开发者开发安装应用程序打包)
- 需要将我们制作好的镜像文件提交到docker仓库中(如:开发者将自己的app应用程序发布安卓手机助手中)
- 本地需要拉去我们docker仓库中下载镜像文件,在交给我们容器运行(如:用户从app市场中下载安装包运行)
- docker运行镜像文件(每个容器需要独立ip访问信息,端口号码映射)
2、 Docker下载镜像的原理
Docker pull 从远程docker 官方仓库下载 镜像,到本地,在使用容器运行该镜像。
注意的是:docker官方镜像仓库地址部署在国外,下载镜像可能比较慢,建议配置国内加速镜像
3、Docker加载镜像配置
(1) 国内加速器服务
https://hub.docker.com/search?q=redis&type=image —在国外访问可能比较慢
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云加速器:https://reg-mirror.qiniu.com (当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。)
(2)例如:配置阿里云加速镜像
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了(如下图):
配置加速镜像的操作命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://puaeb5rh.mirror.aliyuncs.com(自己的加速器专属地址)"]
}
EOF
# 重新加载配置文件
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker
#查看是否配置成功
docker info
如下图,已显示我的加速专属地址,表示已配置成功
4、运行容器
例:运行一个tomcat的容器
1、拉取tomcat镜像
docker pull tomcat:8(可以指定版本号,不指定默认最新版本latest,我这里 下载的tomcat8)
2、查看镜像
docker images
如图,我的tomca:8已下载成功,接下来运行tomcat
3、运行
- docker run -d -p 8081:8080 --name=tomcat8 tomcat:8.0 (参数说明已在讲命令的时候讲解)
- 通过docker ps查看容器是否已运行成功。
- 通过curl命令进行访问严重是否tocat启动成功了。如下图(tomcat下没有项目,所以运行返回的是tomcat的主页信息。也可以通过浏览器访问)
浏览器访问展示的信息:
好啦,可以成功访问啦。
5、Docker Commit
docker commit主要作用:根据当前容器制作为镜像文件
例:下载一个tomcat:8版本的镜像文件,在tomcat的webapps目录下创建自己的一个mytomcat项目,默认访问地址index.html
操作操作步骤:
- (1)从docker hub中下载一个tomcat8镜像文件;并且运行
docker run -p 8081:8080 tomcat:8 - (2)进入tomcat容器中,在webapps 目录中新增 mytomcat文件夹且创建index.html
docker exec -it 3a06b4c779a8 bash
cd webapps
mkdir mytomcat
cd mytomcat
touch index.html
echo "hello,这是我自个创建的镜像哟,嘻嘻" >>index.html
(3)根据当前容器作为模板制作为镜像文件
docker commit -m=“mytomcat” -a=“mytomcat” 3a06b4c779a8 mytomcat:1.0
(4)以当前自己制作的镜像文件运行
docker run -d --name=mytomcat -p 8081:8080 mytomcat:1.0
(5)验证是否能正常访问(如下图,已成功运行自己创建的镜像,且正常访问创建的文件)
六、 docker 数据卷
基本概念
数据卷就是宿主机上的一个文件或目录
当容器目录和数据卷(宿主机)目录绑定,双方修改会立即同步操作
一个数据卷可以被多个容器同时挂载
数据卷作用:容器数据的持久化 外部机器和容器间接通信 容器之间数据交换
使用 -v命令。
数据卷添加的方式
- 直接命令形式添加 docker run -it -v 宿主机绝对路径目录:容器内目录 镜像文件名称
- Dockerfile方式添加
例:安装nginx实现负载均衡
- 创建挂载目录
mkdir -p /data/nginx/{conf,conf.d,html,logs} - 启动docker容器
docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html nginx
说明:-v /data/nginx/html 虚拟机目录 --挂载 容器目录,/usr/share/nginx/html 上传一个 html 放入到 /data/nginx/html。
- 在 /data/nginx/html下创建index.html,在进入nginx容器中的/usr/share/nginx/html下检验是否能看到index.html
- 通过上图,可发现在/data/nginx/html目录下创建index.html文件在nginx容器中也可以访问,说明已正常挂载成功。
- 挂载多个文件,如nginx .conf文件和日志文件
docker run --name nginx81 -d -p 81:80 -v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/logs:/var/log/nginx nginx
说明:\反斜杠 表示换行
七、DockerFile
1、DockerFile编写规范
- A.#描述注释
- B.指令必须要大写,后面至少需要带至少一个参数;
- C.指令是按照从上到下,顺序执行;
2、 DockerFile常用指令
指令 | 说明 |
1. FROM | 指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令 |
2. MAINTAINER | 维护者 |
3. RUN | 容器创建的时候执行一段命令 构建镜像时执行的命令 |
4. ADD | 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget |
5. COPY | 功能类似ADD,但是是不会自动解压文件,也不能访问网络资源 |
6. CMD | 构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件 |
7. ENV | 设置环境变量 |
8. EXPOSE | 指定于外界交互的端口 |
9. VOLUME | 用于指定持久化目录,数据卷挂载的目录 |
10. WORKDIR | 设置进入容器时的路径 默认访问的目录 |
下面的Tomcat的dockerFile,大家可以参照刚才讲到的指令,看下是否能够读懂:
https://github.com/docker-library/tomcat/blob/385e8403a38fab7097d4c3fed2484caba7dfd099/8.5/jdk8/openjdk-slim-buster/Dockerfile
3、例:构建自己centos镜像
实现效果:
- 进入容器中 默认访问目录/usr;
- 实现支持vim插件;
操作步骤
- 在根目录的usr下创建DockerFile文件
- 编辑dockerFile文件
#继承docker hub中centos的镜像文件
FROM centos
#维护者信息
MAINTAINER mycentos-chenlili
#配置环境变量
ENV MYPATH /usr
#进入到容器默认访问的目录
WORKDIR $MYPATH
#安装vim插件
RUN yum -y install vim
#外部访问端口
EXPOSE 80
#启动容器后,自动进入容器中
CMD /bin/bash
- 该Dockerfile实现打包成镜像文件
打包前可以删除自己所有的镜像文件,以便清晰查看自己创建的centos文件)
docker stop $(docker ps -q) & docker rm $(docker ps -aq) —停止/删除所有的容器
docker rmi $(docker images -q)删除所有镜像文件
命令:docker build -f Dockerfile -t mycs:1 .
#参数说明
Dockerfile ------配置文件
mycs----打包镜像文件名称
1 tag 版本号码
如下图可清晰看到在打包镜像文件过程中,我们制作的dockerFile文件内容从上到下的顺序在执行:
结果验证
如图,我的镜像文件以及所依赖的centos父镜像也都有了,且运行自己创建的镜像(mycs)成功后,自动进入了/usr目录,vim查看也有安装成功。说明本次创建自己的DockerFile文件实验成功啦
4、例:用DockerFile打包第一个SpringBoot项目
操作步骤
1、创建一个springboot项目
项目创建步骤省略
下图是我创建的测试类:
2、将springboot项目打包成jar包(打包方式有多种,相信正在做过java项目的同学都都会,这里就不介绍了)
打包成功后,我的项目下demo\target目录就能看到打包好的jar包了
3、定义dockerfile文件,描述springboot项目配置依赖和环境变量(注意:springboot内置嵌入我们的tomcat服务器 所以不需要额外的tomcat容器)
#继承docker hub中centos的镜像文件
FROM java:8
#维护者信息
MAINTAINER mydemo-chenlili
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为demo.jar
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
# 运行jar包
RUN bash -c 'touch /demo.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
#暴露8080端口
EXPOSE 8080
4、将DockerFile文件和springboot项目jar包上传到服务器
(在根目录的usr下创建mydemo,然后上传文件)
5、讲DockerFile文件打包成镜像文件
命令:docker build -f Dockerfile -t mydemo:1 .
如下图可清晰看到在打包镜像文件过程中,我们制作的dockerFile文件内容从上到下的顺序在执行:
7、启动容器,访问springboot验证部署是否成功
命令:docker run -d -p 8081:8080 --name=mydemo mydemo:1
如下图,可以正常访问我的springboot项目啦,表示用DockerFile打包第一个SpringBoot项目
八、 Docker Compose
Docker-compose简介
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Docker-Compose将所管理的容器分为三层:分别是工程(project),服务(service)以及容器(container)
Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。
Docker-compose中两个重要的概念
- 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Docker-compose的安装
1、我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、添加可执行的权限
sudo chmod +x /usr/local/bin/docker-compose
3、验证是否安装成功
docker-compose -v
如下图,已正常显示安装的版本,表示已安装成功啦
Docker-Compose常用命令
1、Docker-Compose命令格式
docker-compose [-f …] [options] [COMMAND] [ARGS…]
命令选项如下:
- -f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。
- -p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
- -x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9+版本)
- -x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本)
- -verbose输出更多调试信息
– v,–version打印版本并退出
2、docker-compose up
docker-compose up [options] [–scale SERVICE=NUM…] [SERVICE…]
选项包括:
- -d 在后台运行服务容器
- –no-color 不使用颜色来区分不同的服务的控制输出
- –no-deps 不启动服务所链接的容器
- –force-recreate 强制重新创建容器,不能与–no-recreate同时使用
- –no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
- –no-build 不自动构建缺失的服务镜像
- –build 在启动容器前构建服务镜像
- –abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
- -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
- –remove-orphans 删除服务中没有在compose文件中定义的容器
- –scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在- compose中通过scale指定的参数
- docker-compose up
启动所有服务 - docker-compose up -d
在后台所有启动服务 - -f 指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
例如:docker-compose -f docker-compose.yml up -d
3、docker-compose ps
docker-compose ps [options] [SERVICE…]
- docker-compose ps 列出项目中目前的所有容器
4、docker-compose stop
docker-compose stop [options] [SERVICE…]
选项包括:
- -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
- docker-compose stop停止正在运行的容器,可以通过docker-compose start 再次启动
5、docker-compose -h
docker-compose -h 查看帮助
6、docker-compose down
docker-compose down [options] 停止和删除容器、网络、卷、镜像。
选项包括:
- –rmi type,删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像
- -v, –volumes,删除已经在compose文件中定义的和匿名的附在容器上的数据卷
- –remove-orphans,删除服务中没有在compose中定义的容器
- docker-compose down 停用移除所有容器以及网络相关
7、docker-compose logs
docker-compose logs [options] [SERVICE…]
查看服务容器的输出。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过–no-color来关闭颜色。
- docker-compose logs 查看服务容器的输出
8、docker-compose build
docker-compose build [options] [–build-arg key=val…] [SERVICE…]
构建(重新构建)项目中的服务容器。
选项包括:
- –compress 通过gzip压缩构建上下环境
- –force-rm 删除构建过程中的临时容器
- –no-cache 构建镜像过程中不使用缓存
- –pull 始终尝试通过拉取操作来获取更新版本的镜像
- -m, –memory MEM为构建的容器设置内存大小
- –build-arg key=val为服务设置build-time变量,服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务
9、docker-compose pull
docker-compose pull [options] [SERVICE…]
拉取服务依赖的镜像。
选项包括:
- –ignore-pull-failures,忽略拉取镜像过程中的错误
- –parallel,多个镜像同时拉取
- –quiet,拉取镜像过程中不打印进度信息
- docker-compose pull 拉取服务依赖的镜像
10、docker-compose restart
docker-compose restart [options] [SERVICE…]
重启项目中的服务。
选项包括:
- -t, –timeout TIMEOUT,指定重启前停止容器的超时(默认为10秒)
- docker-compose restart 重启项目中的服务
11、docker-compose rm
docker-compose rm [options] [SERVICE…]
删除所有(停止状态的)服务容器。
选项包括:
- –f, –force,强制直接删除,包括非停止状态的容器
- -v,删除容器所挂载的数据卷
- docker-compose rm 删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。
12、docker-compose start
docker-compose start [SERVICE…]
- docker-compose start 启动已经存在的服务容器。
13、docker-compose run
docker-compose run [options] [-v VOLUME…] [-p PORT…] [-e KEY=VAL…] SERVICE [COMMAND] [ARGS…]
在指定服务上执行一个命令。
- docker-compose run ubuntu ping www.baidu.com
在指定容器上执行一个ping命令。
14、docker-compose scale
docker-compose scale web=3 db=2 设置指定服务运行的容器个数。通过service=num的参数来设置数量
15、docker-compose pause
docker-compose pause [SERVICE…] 暂停一个服务容器
16、docker-compose kill
docker-compose kill [options] [SERVICE…]
通过发送SIGKILL信号来强制停止服务容器。
支持通过-s参数来指定发送的信号,例如通过如下指令发送SIGINT信号:
docker-compose kill -s SIGINT
17、dokcer-compose config
docker-compose config [options]
验证并查看compose文件配置。
选项包括:
- –resolve-image-digests 将镜像标签标记为摘要
- -q, –quiet 只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
- –services 打印服务名,一行一个
- –volumes 打印数据卷名,一行一个
18、docker-compose create
docker-compose create [options] [SERVICE…]
为服务创建容器。
选项包括:
- –force-recreate:重新创建容器,即使配置和镜像没有改变,不兼容–no-recreate参数
- –no-recreate:如果容器已经存在,不需要重新创建,不兼容–force-recreate参数
- –no-build:不创建镜像,即使缺失
- –build:创建容器前,生成镜像
19、docker-compose exec
docker-compose exec [options] SERVICE COMMAND [ARGS…]
选项包括:
- -d 分离模式,后台运行命令。
- –privileged 获取特权。
- –user USER 指定运行的用户。
- -T 禁用分配TTY,默认docker-compose exec分配TTY。
- –index=index,当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务,例如:docker-compose exec –index=1 web /bin/bash ,web服务中包含多个容器
20、docker-compose port
docker-compose port [options] SERVICE PRIVATE_PORT
显示某个容器端口所映射的公共端口。
选项包括:
- –protocol=proto,指定端口协议,TCP(默认值)或者UDP
- –index=index,如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)
21、docker-compose push
docker-compose push [options] [SERVICE…]
推送服务依的镜像。
选项包括:
- –ignore-push-failures 忽略推送镜像过程中的错误
22、docker-compose stop
docker-compose stop [options] [SERVICE…] 显示各个容器运行的进程情况。
23、docker-compose unpause
docker-compose unpause [SERVICE…] 恢复处于暂停状态中的服务。
24、docker-compose version
docker-compose version 打印版本信息。
docker-compose 入门案例
案例:通过docker-compose部署一个springboot项目
操作流程
1. 创建一个docker-compose.yml;
2. 定制docker-compose 内容;
3. 运行 docker-compose up ;