docker-compose
Compose 简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose 使用的三个步骤:
-
使用 Dockerfile 定义应用程序的环境/镜像。
-
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
-
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
Compose 安装
$ 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
将可执行权限应用于二进制文件:
$ sudo chmod +x /usr/local/bin/docker-compose
创建软链:
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
测试是否安装成功:
$ docker-compose --versioncker-compose version 1.24.1, build 4667896b
创建 docker-compose.yml
# yaml 配置
version**:** '3'services: web: image: hub.cangku.com/aaa/mysql:3.0.0 # 构建好的镜像 ports**:** - "5000:5000" redis: image**:** "redis:alpine" mysql-server: image: hub.cangku.com/aaa/mysql:3.0.0 container_name: mysql-server environment: MYSQL_DATABASE: "netops_proxy" MYSQL_USER: "netops" MYSQL_PASSWORD: "netops_ps" MYSQL_ROOT_PASSWORD: "root_NetOps.2019" TZ: Asia/Shanghai command: ['--character-set-server=utf8', '--collation-server=utf8_bin'] volumes: - /data/mysql:/var/lib/mysql ports: - 23307:3306
使用 Compose 命令构建和运行您的应用
在测试目录中,执行以下命令来启动应用程序:
docker-compose up
如果你想在后台执行该服务可以加上 -d 参数:
docker-compose up -d
yml 配置指令参考
version
build
images
image: redisimage: ubuntu:14.04image: tutum/influxdbimage: example-registry.com:4000/postgresqlimage: a4bc65fd # 镜像id
cap_add,cap_drop
cgroup_parent
command
container_name
depends_on
deploy
devices
entrypoint
environment
expose
logging
配置如下:
logging: driver: json-file options: max-size: "200k" # 单个文件大小为200k max-file: "10" # 最多10个文件
driver: "json-file"driver: "syslog"driver: "none"
network_mode
network_mode: "bridge"network_mode: "host"network_mode: "none"network_mode: "service:[service name]"network_mode: "container:[container name/id]"
volumes
将主机的数据卷或着文件挂载到容器里。
version: "3.7"services: db: image: postgres:latest volumes: - "/localhost/postgres.sock:/var/run/postgres/postgres.sock" - "/localhost/data:/var/lib/postgresql/data"
下面介绍一些在使用 Docker Compose 时常用的命令。
1) docker-compose up
用于部署一个 Compose 应用。
默认情况下该命令会读取名为 docker-compose.yml 或 docker-compose.yaml 的文件。
当然用户也可以使用 -f 指定其他文件名。通常情况下,会使用 -d 参数令应用在后台启动。
2) docker-compose stop
停止 Compose 应用相关的所有容器,但不会删除它们。
被停止的应用可以很容易地通过 docker-compose restart 命令重新启动。
3) docker-compose rm
用于删除已停止的 Compose 应用。
它会删除容器和网络,但是不会删除卷和镜像。
4) docker-compose restart
重启已停止的 Compose 应用。
如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
5) docker-compose ps
用于列出 Compose 应用中的各个容器。
输出内容包括当前状态、容器运行的命令以及网络端口。
6) docker-compose down
停止并删除运行中的 Compose 应用。
它会删除容器和网络,但是不会删除卷和镜像。