当前位置:   article > 正文

docker-compose基本命令使用_docker-compose命令使用

docker-compose命令使用

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

docker-compose安装

必要条件

1、服务器已经安装docker

compose安装

官网: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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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 镜像的容器。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325

compose基本命令使用

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 250
  • 251
  • 252
  • 253
  • 254
  • 255
  • 256
  • 257
  • 258
  • 259
  • 260
  • 261
  • 262
  • 263
  • 264
  • 265
  • 266
  • 267
  • 268
  • 269
  • 270
  • 271
  • 272
  • 273
  • 274
  • 275
  • 276
  • 277
  • 278
  • 279
  • 280
  • 281
  • 282
  • 283
  • 284
  • 285
  • 286
  • 287
  • 288
  • 289
  • 290
  • 291
  • 292
  • 293
  • 294
  • 295
  • 296
  • 297
  • 298
  • 299
  • 300
  • 301
  • 302
  • 303
  • 304
  • 305
  • 306
  • 307
  • 308
  • 309
  • 310
  • 311
  • 312
  • 313
  • 314
  • 315
  • 316
  • 317
  • 318
  • 319
  • 320
  • 321
  • 322
  • 323
  • 324
  • 325
  • 326
  • 327
  • 328
  • 329
  • 330
  • 331
  • 332
  • 333
  • 334
  • 335
  • 336
  • 337
  • 338
  • 339
  • 340
  • 341
  • 342
  • 343
  • 344
  • 345
  • 346
  • 347
  • 348
  • 349
  • 350
  • 351
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • 363
  • 364
  • 365
  • 366
  • 367
  • 368
  • 369
  • 370
  • 371
  • 372
  • 373
  • 374
  • 375
  • 376
  • 377
  • 378
  • 379
  • 380
  • 381
  • 382
  • 383
  • 384
  • 385
  • 386
  • 387
  • 388
  • 389
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • 397
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 409
  • 410

Compose实际应用

git: https://gitee.com/starsky20/docker-compose-application.git

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/180621
推荐阅读
相关标签
  

闽ICP备14008679号