赞
踩
Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。借助 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务。
Compose 适用于所有环境:生产、登台、开发、测试以及 CI 工作流。
使用 Compose 基本上是一个三步过程:
1、使用定义您的应用程序的环境,Dockerfile以便它可以在任何地方复制。
2、定义组成您的应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。
3、运行docker compose up和码头工人组成命令启动并运行你的整个应用程序。您也可以docker-compose up使用 docker-compose 二进制文件运行。
官网:https://docs.docker.com/compose/
中文网站:https://docker_practice.gitee.io/zh-cn
1、服务器已经安装docker
官网:https://docs.docker.com/compose/install/
安装步骤: 1、运行此命令以下载 Docker Compose 的当前稳定版本: sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 国内镜像: curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose 2、对二进制文件应用可执行权限: sudo chmod +x /usr/local/bin/docker-compose 3、建立软连接 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose 4、测试安装 docker-compose --version 启动:docker-compose up 停止:docker-compose stop 5、卸载 sudo rm /usr/local/bin/docker-compose 如果您使用pip以下命令安装,则卸载 Docker Compose : pip uninstall docker-compose
参考文档:
https://docs.docker.com/compose/compose-file/compose-file-v3/
https://vuepress.mirror.docker-practice.com/compose/compose_file/
Compose默认的模板文件名称为 docker-compose.yml,格式为yaml格式. version: "3" services: webapp: image: examples/web ports: - "80:80" volumes: - "/data" 注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中重复设置。 3.3.1.build 指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。 version: '3'services: webapp: build: ./dir 可以使用 context 指令指定 Dockerfile 所在文件夹的路径。使用 dockerfile 指令指定 Dockerfile 文件名,这里的文件名可以自定义,默认文件名为Dockerfile, 如果是默认文件名,可以不用指定dockerfile文件,使用 arg 指令指定构建镜像时的变量。 version: '3'services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate args: buildno: 1 使用 cache_from 指定构建镜像的缓存 build: context: . cache_from: - alpine:latest - corp/web_app:3.14 3.3.2.cap_add, cap_drop 指定容器的内核能力(capacity)分配。 例如,让容器拥有所有能力可以指定为: cap_add: - ALL 去掉 NET_ADMIN 能力可以指定为: cap_drop: - NET_ADMIN 3.3.3.command 覆盖容器启动后默认执行的命令 command: bundle exec thin -p 3000 该命令也可以是一个列表,类似于 dockerfile: command: ["bundle", "exec", "thin", "-p", "3000"] 3.3.4.configs config 定义仅在 3.3 版及更高版本的撰写文件格式中受支持 3.3.5.Container_name 指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式。 container_name: docker-web-container 注意: 由于 Docker 容器名称必须是唯一的,因此如果指定了自定义名称,则不能将服务扩展到 1 个以上的容器。 使用 docker stack deploy 时的注意事项:在 swarm 模式下部署堆栈container_name时忽略该选项。 3.3.6.deploy 指定与服务部署和运行相关的配置,仅用于 Swarm mode. 3.3.7.devices 设备映射列表。使用与--devicedocker 客户端创建选项相同的格式. devices: - "/dev/ttyUSB0:/dev/ttyUSB0" 使用 docker stack deploy 时的注意事项 在 swarm 模式下部署堆栈devices时忽略该选项 3.3.8.depends_on 解决容器的依赖、启动先后的问题,表示服务之间的依赖关系。服务依赖会导致以下行为: docker-compose up按依赖顺序启动服务。在下面的例子中,db和redis在 之前启动web。 docker-compose up SERVICE自动包含SERVICE的依赖项。在下面的示例中,docker-compose up web还创建并启动db和redis。 docker-compose stop按依赖顺序停止服务。在以下示例中,web在db和之前停止redis。 version: "3.9"services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres 注意:web 服务不会等待 redis db 「完全启动」之后才启动 3.3.9.dns 自定义 DNS 服务器。可以是一个值,也可以是一个列表. dns: 8.8.8.8 dns: - 8.8.8.8 - 114.114.114.114 3.3.10.dns_search 配置 DNS 搜索域。可以是一个值,也可以是一个列表。 dns_search: example.com dns_search: - domain1.example.com - domain2.example.com 3.3.11.tmpfs 挂载一个 tmpfs 文件系统到容器。 tmpfs: /runtmpfs: - /run - /tmp 3.3.12.env_file 从文件中获取环境变量,可以为单独的文件路径或列表。如果通过 docker-compose -f FILE 方式来指定 Compose 模板文件,则 env_file 中变量的路径会基于模板文件路径。如果有变量名称与 environment 指令冲突,则按照惯例,以后者为准。 env_file: .env env_file: - ./common.env - ./apps/web.env - /opt/secrets.env 环境变量文件中每一行必须符合格式,支持 # 开头的注释行 # common.env: Set development environment PROG_ENV=development 3.3.13.environment 设置环境变量。你可以使用数组或字典两种格式。只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据。 environment: RACK_ENV: development SESSION_SECRET: environment: - RACK_ENV=development - SESSION_SECRET 如果变量名称或者值中用到 true|false,yes|no 等表达 布尔 (opens new window)含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF 3.3.14.expose 暴露端口,但不映射到宿主机,只被连接的服务访问。仅可以指定内部端口为参数 expose: - "3000" - "8000" 3.3.15.external_links 注意:不建议使用该指令。链接到 docker-compose.yml 外部的容器,甚至并非 Compose 管理的外部容器。 external_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql 3.3.16.extra_hosts 类似 Docker 中的 --add-host 参数,指定额外的 host 名称映射信息。 extra_hosts: - "googledns:8.8.8.8" - "dockerhub:52.1.157.61" 会在启动后的服务容器中 /etc/hosts 文件中添加如下两条条目。 8.8.8.8 googledns 52.1.157.61 dockerhub 3.3.17.healthcheck 通过命令检查容器是否健康运行。 healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 1m30s timeout: 10s retries: 3 3.3.18.image 指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。 image: ubuntu image: orchardup/postgresql image: a4bc65fd 3.3.19.labels 为容器添加 Docker 元数据(metadata)信息。例如可以为容器添加辅助说明信息。 labels: com.startupteam.description: "webapp for a startup team" com.startupteam.department: "devops department" com.startupteam.release: "rc3 for v1.0" 3.3.20.links 警告: 该--link标志是 Docker 的遗留功能。它可能最终会被删除。除非您绝对需要继续使用它,否则我们建议您使用 用户定义的网络 来促进两个容器之间的通信,而不是使用--link. 用户定义的网络不支持但您可以使用的一项功能 --link是在容器之间共享环境变量。但是,您可以使用其他机制(例如卷)以更可控的方式在容器之间共享环境变量。 链接到另一个服务中的容器。指定服务名称和链接别名 ( "SERVICE:ALIAS"),或仅指定服务名称。 web: links: - "db" - "db:database" - "redis" 链接服务的容器可以通过与别名相同的主机名访问,如果未指定别名,则可以使用服务名称. 使用 docker stack deploy 时的注意事项: 在 swarm 模式下部署堆栈links时忽略该选项 3.3.21.logging 服务的日志记录配置 logging: driver: syslog options: syslog-address: "tcp://192.168.0.42:123" 目前支持三种日志驱动类型。 driver: "json-file" driver: "syslog" driver: "none" 只有json-file和journald驱动程序可以直接从docker-compose up和获取日志docker-compose logs。使用任何其他驱动程序不会打印任何日志。 options 配置日志驱动的相关参数。设置最大存储大小和最大文件数使用键值对。 options: max-size: "200k" max-file: "10" 3.3.22.network_mode 设置网络模式。使用与 docker 客户端--network参数相同的值,加上特殊形式service:[service name]。 network_mode: "bridge" network_mode: "host" network_mode: "none" network_mode: "service:[service name]" network_mode: "container:[container name/id]" 3.3.23.networks 配置容器连接的网络。 version: "3"services: some-service: networks: - some-network - other-network networks: some-network: other-network: 配置网络需要通过networks声名。 3.3.24.pid 跟主机系统共享进程命名空间。打开该选项的容器之间,以及容器和宿主机系统之间可以通过进程 ID 来相互访问和操作。 pid: "host" 3.3.25.ports 暴露端口信息。 使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以. 有以下三种选择: 指定两个端口 ( HOST:CONTAINER) 仅指定容器端口(为主机端口选择了一个临时主机端口)。 指定要绑定到 AND 两个端口的主机 IP 地址(默认为 0.0.0.0,表示所有接口):( IPADDR:HOSTPORT:CONTAINERPORT)。如果 HOSTPORT 为空(例如127.0.0.1::80),则会选择一个临时端口来绑定到主机上。 ports: - "3000" - "3000-3005" - "8000:8000" - "9090-9091:8080-8081" - "49100:22" - "127.0.0.1:8001:8001" - "127.0.0.1:5000-5010:5000-5010" - "127.0.0.1::5000" - "6060:6060/udp" - "12400-12500:1240" 注意:以HOST:CONTAINER格式映射端口时,使用小于 60 的容器端口时可能会遇到错误结果,因为 YAML 将格式xx:yy中的数字解析为 base-60 值。因此,我们建议始终将您的端口映射明确指定为字符串 3.3.26.secrets 存储敏感数据,例如 mysql 服务密码。 version: "3.1"services: mysql: image: mysql environment: MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password secrets: - db_root_password - my_other_secret secrets: my_secret: file: ./my_secret.txt my_other_secret: external: true 通过将密码定义到文件中,然后外包引入文件读取密码。 3.3.27.security_opt 指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)。例如配置标签的用户名和角色名。 security_opt: - label:user:USER - label:role:ROLE 3.3.28.stop_signal 设置另一个信号来停止容器。在默认情况下使用的是 SIGTERM 停止容器。 stop_signal: SIGUSR1 3.3.29.sysctls 配置容器内核参数。 sysctls: net.core.somaxconn: 1024 net.ipv4.tcp_syncookies: 0 sysctls: - net.core.somaxconn=1024 - net.ipv4.tcp_syncookies=0 3.3.30.ulimits 指定容器的 ulimits 限制值。 例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。 ulimits: nproc: 65535 nofile: soft: 20000 hard: 40000 3.3.31.volumes 数据卷所挂载路径设置。可以设置为宿主机路径(HOST:CONTAINER)或者数据卷名称(VOLUME:CONTAINER),并且可以设置访问模式 (HOST:CONTAINER:ro)。 该指令中路径支持相对路径。 volumes: - /var/lib/mysql - cache/:/tmp/cache - ~/configs:/etc/configs/:ro 如果路径为数据卷名称,必须在文件中配置数据卷。 version: "3" services: my_src: image: mysql:8.0 volumes: - mysql_data:/var/lib/mysql volumes: mysql_data: 3.3.32.其它指令 此外,还有包括 domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir 等指令,基本跟 docker run 中对应参数的功能一致。 指定服务容器启动后执行的入口文件。 entrypoint: /code/entrypoint.sh 指定容器中运行应用的用户名。 user: nginx 指定容器中工作目录。 working_dir: /code 指定容器中搜索域名、主机名、mac 地址等。 domainname: your_website.comhostname: testmac_address: 08-00-27-00-0C-0A 允许容器中运行一些特权命令。 privileged: true 指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped。 restart: always 以只读模式挂载容器的 root 文件系统,意味着不能对容器内容进行修改。 read_only: true 打开标准输入,可以接受外部输入。 stdin_open: true 模拟一个伪终端。 tty: true 3.3.33.读取变量 Compose 模板文件支持动态读取主机的系统环境变量和当前目录下的 .env 文件中的变量。 例如,下面的 Compose 文件将从运行它的环境中读取变量 ${MONGO_VERSION} 的值,并写入执行的指令中。 version: "3"services: db: image: "mongo:${MONGO_VERSION}" 如果执行 MONGO_VERSION=3.2 docker-compose up 则会启动一个 mongo:3.2 镜像的容器;如果执行 MONGO_VERSION=2.8 docker-compose up 则会启动一个 mongo:2.8 镜像的容器。 若当前目录存在 .env 文件,执行 docker-compose 命令时将从该文件中读取变量。 在当前目录新建 .env 文件并写入以下内容。 # 支持 # 号注释MONGO_VERSION=3.6 执行 docker-compose up 则会启动一个 mongo:3.6 镜像的容器。
3.5.命令使用 官网:https://docs.docker.com/compose/reference/ 中文:https://vuepress.mirror.docker-practice.com/compose/commands/#down [root@localhost demo]# sudo docker-compose --help 使用Docker定义和运行多容器应用程序. Usage: docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...] docker-compose -h|--help Options: -f, --file FILE 指定compose文件(默认名称: docker-compose.yml,可以不用指定,如果是其他文件名,需要手动指定) -p, --project-name NAME 指定备用项目名称,(默认为当前目录名称) --profile NAME 指定要启用的配置文件 -c, --context NAME 指定上下文名称 --verbose 显示输出信息 --log-level LEVEL 设置日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL) --ansi (never|always|auto) 控制何时打印ANSI控制字符 --no-ansi 不打印ANSI控制字符(已弃用) -v, --version 打印版本信息并退出 -H, --host HOST 连接到的守护进程套接字 --tls Use TLS; implied by --tlsverify --tlscacert CA_PATH CA签署的信任证书路径 --tlscert CLIENT_CERT_PATH TLS证书文件的路径 --tlskey TLS_KEY_PATH TLS密钥文件的路径 --tlsverify 使用TLS并验证远程 --skip-hostname-check 不用根据客户端证书中指定的名称检查守护程序的主机名 --project-directory PATH 指定备用工作目录(默认值:compose文件的路径) --compatibility 如果设置,Compose将尝试将v3文件中的密钥转换为其非Swarm等效项(已弃用) --env-file PATH 指定环境文件 Commands: build 生成或重建服务 config 校验compose文件 create 创建服务 down 停止并删除服务 events 从容器接收实时事件 exec 在运行的容器中执行命令 help 查看帮助命令 images 查看所有镜像 kill 结束运行容器 logs 查看容器运行日志 pause 暂停服务 port 打印端口绑定的公共端口 ps 查看启动的容器 pull 拉取服务镜像 push 上传服务镜像 restart 重启服务 rm 移除停止的容器 run 运行命令 scale 设置服务的容器数,即启动几个容器副本 start 启动服务 stop 停止服务 top 显示正在运行的进程 unpause 取消暂停服务 up 创建并启动容器 version 显示版本信息并退出 [root@localhost demo]# 3.5.1.images sudo docker-compose images --help 列出所创建容器使用的图像。该命令相当于docker images Usage: images [options] [--] [SERVICE...] Options: -q, --quiet 只显示容器IDs [root@localhost test]# 1、示例 查看所有镜像:sudo docker-compose images 或者 sudo docker-compose -f docker-compose.yml images; 默认查询镜像时,在当前目录下必须有docker-compose.yml文件。 只显示容器ID: sudo docker-compose images -q 3.5.2.pull sudo docker-compose -f docker-compose.yml pull --help 拉取服务依赖的镜像,但是不启动容器。该命令相当于docker pull Usage: pull [options] [--] [SERVICE...] Options: --ignore-pull-failures 拉取镜像,忽略失败的镜像 --parallel 不推荐,并行拉取多个图像(默认情况下启用). --no-parallel 禁用并行拉取镜像. -q, --quiet 拉取时不打印进度信息 --include-deps 拉取声明为依赖项的服务 1、示例 docker-compose.yml文件: 拉取依赖服务:sudo docker-compose -f docker-compose.yml pull redis 查看镜像:sudo docker-compose images; 3.5.3.push 上传服务镜像. sudo docker-compose -f docker-compose.yml push --help 上传服务镜像。该命令相当于docker push Usage: push [options] [--] [SERVICE...] Options: --ignore-push-failures 忽略上传镜像过程中的错误信息. sudo docker-compose -f docker-compose.yml push demo 3.5.4.build sudo docker-compose build --help 编译打包生成镜像。该命令相当于docker build Usage: build [options] [--build-arg key=val...] [--] [SERVICE...] Options: --build-arg key=val 设置服务的构建时变量,相当于docker run -e --compress 使用gzip压缩构建上下文 --force-rm 删除构建过程中的中间容器 -m, --memory MEM 设置生成容器的内存限制 --no-cache 生成映像时不要使用缓存 --no-rm 生成完成后不擅长中间容器 --parallel 并行构建镜像 --progress string 设置进度输出的类型(自动、普通、tty) --pull 尝试拉取镜像的最新版本 -q, --quiet 不用将任何内容打印到标准输出 1、示例 编写docker-compose.yml文件 version: "3.8" services: demo: #启动服务时先将build命令中指定的dockerfile打包成镜像,在运行镜像 build: #指定上下文目录,即dockerfile所在目录,默认是docker-compose目录 context: demo dockerfile: Dockerfile container_name: demo ports: - "8090:8090" networks: - mynet #创建网桥 networks: mynet: 构建镜像 sudo docker-compose -f docker-compose.yml build 3.5.5.config sudo docker-compose config --help 校验compose模版文件. Usage: config [options] Options: --resolve-image-digests 将图像标记固定到摘要 --no-interpolate 不要插入临时环境变量 -q, --quiet 只验证配置,不打印内容 --profiles 打印配置文件名称,每行一个 --services 打印服务名称,每行一个. --volumes 打印挂载名称,每行一个. --hash="*" 打印服务配置哈希,每行一个。为指定服务的列表设置“service1,service2”,或使用通配符显示所有服务 1、示例 查看服务名:sudo docker-compose -f docker-compose.yml config --services 查看挂载目录:sudo docker-compose -f docker-compose.yml config --volumes 校验文件语法:sudo docker-compose -f docker-compose.yml config 3.5.6.ps 查看运行容器。该命令相当于docker ps Usage: ps [options] [--] [SERVICE...] Options: -q, --quiet 只查看容器ID --services 查看服务 --filter KEY=VAL 查看服务中指定的属性 -a, --all 查看所有容器(包含停止、运行、正在创建等等) 只查看容器ID: sudo docker-compose ps -q 查看服务:sudo docker-compose ps --services 查看服务中指定的属性:sudo docker-compose ps --filter "name=redis" 查看所有容器:sudo docker-compose ps -a 3.5.7.create [root@localhost tomcat]# sudo docker-compose create --help 创建服务,此命令已弃用。改为使用带有“--no start”的“up”命令. Usage: create [options] [SERVICE...] Options: --force-recreate 即使容器的配置和映像没有更改,也要重新创建容器 --no-recreate 如果容器已经存在,请不要重新创建。 --no-build 即使它丢失了,也不创建镜像, --build 在创建容器之前构建镜像 1、示例 sudo docker-compose -f docker-compose.yml create --build 3.5.8.up 创建并在前台启动容器.该中方式启动不能在后台运行,退出后自动结束。该命令相当于docker run -it xxx 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指定的参数 1、示例 启动容器,并拉取依赖容器。 sudo docker-compose -f docker-compose.yml up 3.5.9.run sudo docker-compose -f docker-compose.yml run --help 在服务中运行命令. 示例: $ docker-compose run web python manage.py shell 默认情况下,链接服务将启动,除非它们已经在运行。如果不想启动链接服务,请使用 `docker-compose run --no-deps SERVICE COMMAND [ARGS...]`. Usage: run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] [--] SERVICE [COMMAND] [ARGS...] Options: -d, --detach 独立模式: 在后台运行容器,打印新的容器名称. --name NAME 为容器指定一个名称 --entrypoint CMD 覆盖容器启动入库命令 -e KEY=VAL 设置环境变量(可多次使用) -l, --label KEY=VAL 添加或替代标签 (可多次使用) -u, --user="" 以指定的用户名或uid运行 --no-deps 不要启动链接服务 --rm 运行后移除容器。在分离模式下忽略. -p, --publish=[] 将容器的端口发布到主机 --service-ports 在启用服务端口并映射到主机的情况下运行命令. --use-aliases 在容器连接到的网络中使用服务的网络别名 -v, --volume=[] 绑定并挂载卷名 (默认 []) -T 禁用伪tty分配。默认情况下,`docker compose run`分配TTY -w, --workdir="" 容器内的工作目录 1、示例 #在指定容器上执行一个ping命令:sudo docker-compose -f docker-compose.yml run demo ping www.baidu.com 3.5.10.start sudo docker-compose start --help 启动停止的容器。该命令相当于docker start [容器ID/容器名称] Usage: start [服务名...] 1、示例 sudo docker-compose start tomcat01 3.5.11.restart 重启服务。该命令相当于docker restart [容器ID/容器名称] sudo docker-compose -f docker-compose.yml restart --help 重新启动容器. Usage: restart [options] [--] [SERVICE...] Options: -t, --timeout TIMEOUT 以秒为单位指定关机超时.(默认: 10) 1、示例 重新启动demo服务。 sudo docker-compose -f docker-compose.yml restart -t 5 demo 3.5.12.exec [root@localhost test]# sudo docker-compose exec --help 在运行的容器中执行命令。该命令相当于docker exec [容器ID/容器名称] Usage: exec [options] [-e KEY=VAL...] [--] SERVICE COMMAND [ARGS...] Options: -d, --detach 分离模式:在后台运行命令 --privileged 为进程授予扩展权限 -u, --user USER 指定运行命令用户. -T 禁用伪tty分配。默认情况下,`docker compose exec`分配TTY --index=index 果服务有多个实例,则容器的索引[默认值:1] -e, --env KEY=VAL 设置环境变量(可多次使用,API<1.25不支持) -w, --workdir 此命令的workdir目录的DIR路径 [root@localhost test]# 3.5.13.down 此命令将会停止 up 命令所启动的容器,并移除网络. sudo docker-compose down --help 停止容器并删除由“up”创建的容器、网络、卷和映像。默认情况下,仅删除以下内容: - compose文件中服务定义的容器。 - compose文件中定义的网桥 - 已使用默认的网络 永远不会删除定义为“外部”的网络和卷. Usage: down [options] Options: --rmi type 删除镜像,必须是以下类型之一:all: 删除所有服务使用的镜像;local: 只删除本地自定义镜像标签的镜像。 -v, --volumes 删除在挂载点定义的卷名和附加到容器中的卷名 --remove-orphans 删除Compose文件中未定义的服务的容器 -t, --timeout TIMEOUT 以秒为单位指定关机超时。(默认值:10) [root@localhost test]# 1、示例 sudo docker-compose down sudo docker-compose down --rmi all 3.5.14.stop sudo docker-compose stop --help 停止运行容器而不删除它,可以使用 `docker-compose start` 重新启动。 Usage: stop [options] [--] [SERVICE...] Options: -t, --timeout TIMEOUT 以秒为单位指定关机超时.(默认: 10) 1、示例 sudo docker-compose stop demo 3.5.15.pause sudo docker-compose pause --help 暂停一个服务容器。 Usage: pause [SERVICE...] 1、示例 sudo docker-compose pause tomcat01 3.5.16.unpause sudo docker-compose unpause --help 取消暂停服务. Usage: unpause [SERVICE...] 1、示例 sudo docker-compose unpause tomcat01 3.5.17.kill sudo docker-compose kill --help 强制停止容器. Usage: kill [options] [--] [SERVICE...] Options: -s SIGNAL 通过发送 SIGKILL 信号来强制停止服务容器.默认信号使用SIGKILL. 1、示例 sudo docker-compose kill -s SIGINT 3.5.18.logs sudo docker-compose logs --hlep 查看服务容器的输出日志。该命令相当于docker logs Usage: logs [options] [--] [SERVICE...] Options: --no-color 产生单色输出 -f, --follow 跟踪日志输出. -t, --timestamps 显示时间戳. --tail="all" 从每个容器的日志末尾开始显示的行数. --no-log-prefix 不要在日志中打印前缀. 1、示例 sudo docker-compose logs tomcat01 不显示日志颜色:sudo docker-compose logs --no-color tomcat01 跟踪日志输出:sudo docker-compose logs -f tomcat01 查看最后5行日志:sudo docker-compose logs --tail 5 tomcat01 3.5.19.rm sudo docker-compose rm --help 删除服务容器.默认情况下,不会删除附加到容器的匿名卷。您可以使用“-v”覆盖此选项。要列出所有卷,请使用“docker volume ls”。任何不在卷中的数据都将丢失. Usage: rm [options] [--] [SERVICE...] Options: -f, --force 强制删除,不用确认. -s, --stop 先停止容器,在删除容器。 -v 删除附加到容器的所有匿名卷 -a, --all 已弃用-无效 1、示例 删除运行的容器: sudo docker rm -f $(sudo docker ps -q) 删除镜像: sudo docker rmi $(sudo docker images -q) 查看运行容器:sudo docker-compose ps 停止并删除:sudo docker-compose rm -s demo 删除所有容器:sudo docker-compose rm -s $(sudo docker-compose ps --services) 3.5.20.events 从容器接收实时事件。 sudo docker-compose events --help 从容器接收实时事件. Usage: events [options] [--] [SERVICE...] Options: --json 将事件作为json对象流输出 1、示例 sudo docker-compose events demo 3.5.21.port sudo docker-compose port --help 打印端口绑定的公共端口. Usage: port [options] [--] SERVICE PRIVATE_PORT Options: --protocol=proto 指定端口协议tcp/udp [默认: tcp] --index=index 如果服务有多个实例,则容器的索引[默认值:1] 1、示例 3.5.22.scale 设置服务的容器数,即启动几个容器副本. sudo docker-compose scale --help 设置指定服务运行的容器个数,通过service=num的参数来设置数量。 示例: $ docker-compose scale web=2 worker=3 此命令已弃用。使用带有“---scale”标志的up命令相反. Usage: scale [options] [SERVICE=NUM...] Options: -t, --timeout TIMEOUT 以秒为单位指定关机超时.(默认: 10) 1、示例 启动多个容器。docker-compose.yml文件内容: 通过scale扩展副本时,不能指定绑定端口,容器名称,这样造成启动时容器名称、端口被占用。 sudo docker-compose scale demo=2 3.5.23.top 显示正在运行的进程. sudo docker-compose top --help 查看容器运行的进程 Usage: top [SERVICE...] 1、示例 查看demo容器进程:sudo docker-compose top demo 3.5.24.version 显示版本信息并退出。 sudo docker-compose version --help 显示版本信息并退出. Usage: version [--short] Options: --short 仅显示Compose的版本号 1、示例 sudo docker-compose version --short
git: https://gitee.com/starsky20/docker-compose-application.git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。