一、docker-compose 根底
1.1、什么是 docker compose
compose 我的项目是 Docker 官网的开源我的项目,负责实现 Docker 容器集群的疾速编排,通过一个独自的 docker-compose.yml 模板文件来定义一组相关联的利用容器为一个我的项目
docker compose 两个概念:* 服务:一个利用的容器,实际上能够蕴含若干运行雷同镜像的容器实例
* 我的项目:由一组关联的利用容器组成的一个残缺业务单元,在 docker-compose.yml 中定义
1.2、基本原理
Compose 我的项目是由 Python 编写的,实际上就是调用了 Docker 服务提供的 API 来
对容器进行治理,因而,只有所在的操作系统的平台反对 Docker API,就能够
在其上利用 Compose 来进行编排治理.
1.3、compose 装置
-
间接从 github 下载即可,前提要先装置 Docker,版本要在 1.9.1 以上
通过 docker -v 能够查看到 docker 版本。
- 通过 curl 命令来进行下载安装
# 下载过程可能比较慢,须要急躁期待
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 赋权限
chmod +x /usr/local/bin/docker-compose
# 查看版本(验证是否装置胜利)docker-compose --version
1.4、Docker-compose 罕用参数
1.4.1、build
- 定义镜像生成,能够指定 Dockerfile 文件所在的目录门路,反对绝对路径和相对路径
- 服务能够基于指定的镜像,也能够基于一份 Dockerfile,在应用 up 启动之时执行构建工作,这个构建标签就是 build,它能够指定 Dockerfile 所在文件夹的门路。Compose 将会利用它主动构建这个镜像,而后应用这个镜像启动服务容器。
- build 能够指定为蕴含构建上下文门路的字符串
# 基于 tomcat:lates 构建 docker-compose
# home 目录下建一个新的目录
mkdir test_compose
# 在 test_compose 目录下新建文件 Dockerfile
vim Dockerfile
# 编辑 Dockerfile
FROM tomcat:latest
RUN echo "hello docker_compose"
# 在 test_compose 目录下新建文件 docker-compose.yml
vim docker-compose.yml
# 编辑 docker-compose.yml
version: "3.7" # 版本号
services: # 服务组
webapp: # 服务名称
build: ./
db:
build: ./ # Dockerfile 文件门路
# 启动
docker-compose up
build 两个子参数:
- context
- dockerfile
version: "3.7" # 版本号
services: # 服务组
webapp: # 服务名称
build:
context: . # 指定 Dockerfile 文件门路
dockerfile: Dockerfile-alternate
# 指定 Dockerfile 文件
1.4.2、container_name
为自定义的容器指定一个名称,而不是应用默认的名称
version: "3.7"
services:
webapp:
build:
context: ./
dockerfile: Dockerfile_centos
container_name: my-web-container
# container_name 必须在 build 之后
1.4.3、image
从指定的镜像中启动容器,能够是存储仓库、标签以及镜像 ID,如果镜像不存在,Compose 会主动拉去镜像。
version: "3.7" # 版本号
services: # 服务组
webapp: # 服务名称
image: tomcat:latest # 指定镜像启动容器
container_name: my_test_webapp # 指定容器名称
1.4.4、depends_on
建设容器依赖关系的参数,能够有多个依赖:
- docker-compose up 以依赖程序启动服务
- docker-compose up 主动蕴含 SERVICE 依赖
- docker-compose stop 按依赖程序进行服务
version: "3.7"
services:
webapp:
image: tomcat:latest
depends_on: # 设置依赖服务器
- db
db:
image: mysql
1.4.5、environment
- 增加环境变量,能够应用数组或字典
-
设置镜像变量
# 字典的模式 environment: RACK_ENV: development SHOW: 'true' SESSION_SECRET: # 数组的模式 environment: - RACK_ENV=development - SHOW=true - SESSION_SECRET
1.4.6、ports
-
映射端口,能够应用 HOST:CONTAINER 的形式指定端口,也能够指定容器端口(抉择长期主机端口),宿主机会随机映射端口
*ports: -"3000-3005" -"8000:8000" -"9090-9091:8080-8081" -"49100:22"
1.4.7、restart
- 默认值为 no,即在任何状况下都不会重新启动容器;
- 当值为 always 时,容器总是重新启动
- 当值为 on-failure 时,当呈现 on-failure 报错容器退出时,容器重新启动
1.4.8、volumes
- 挂载一个目录或者一个已存在的数据卷容器,能够间接应用 HOST:CONTAINER 这样的格局,或者应用 HOST:CONTAINER:ro 这样的格局,后者对于容器来说,数据卷是只读的,这样能够无效爱护宿主机的文件系统
1.5、Docker-compose 常用命令
1.5.1、docker-compose up
- 主动实现包含构建镜像,(从新) 创立服务,启动服务,并关联服务相干容器的一系列操作
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
-
参数:
- -d 在后盾运行服务容器
- –force-recreate 强制从新创立容器,不能与 -no-recreate 同时应用
- –no-recreate 如果容器曾经存在,则不从新创立,不能与–force-recreate 同时应用
- –no-build 不主动构建缺失的服务镜像
- –build 在启动容器前构建服务镜像
- -t, –timeout TIMEOUT 进行容器时候的超时(默认为 10 秒)
- 更多用法:docker-compose up -h/–help
1.5.2、docker-compose ps
- 列出我的项目中所有的容器
docker-compose ps [options] [SERVICE...]
- 更多用法:docker-compose ps -h/–help
- 留神:必须进入具体的 compose 的 yaml 文件所在目录,能力执行该命令
1.5.3、docker-compose stop
- 进行正在运行的容器
docker-compose stop [options] [SERVICE...]
- 参数:-t,-timeout TIMEOUT 进行容器时候的超时工夫
1.5.4、docker-compose logs
- 查看服务容器的输入
docker-compose logs [options] [SERVICE...]
- -f 跟踪日志输入
1.5.5、docker-compose build
- 构建(从新构建)我的项目中的服务容器的镜像
docker-compose build [options] [--build-arg key=val...] [SERVICE...]
-
参数:
- -force-rm 删除构建过程中的长期容器
- -no-cache 构建镜像过程中不应用缓存
- –pull 始终尝试通过拉取操作来获取更新版本的镜像
- -m, –memory MEM 为构建的容器设置内存大小
- -build-arg key=val 为服务器设置 build-time 变量
1.5.6、docker-compose pull
- 拉取服务依赖的镜像
docker-compose pull [options] [SERVICE...]
-
参数:
- –ignore-pull-failures,疏忽拉取镜像过程中的谬误
- –parallel,多个镜像同时拉取
- –quiet,拉取镜像过程中不打印进度信息
1.5.7、docker-compose restart
- 拉取服务依赖的镜像
docker-compose pull [options] [SERVICE...]
1.5.8、docker-compose rm
- 删除所有(进行状态的)服务容器
docker-compose rm [options] [SERVICE...]
-
参数:
- -f,-force,强制间接删除,包含非进行状态的容器
- -v,删除容器所挂载的数据卷
1.5.9、docker-compose start
- 启动已存在的服务容器