Docker-compose常用命令整理

Docker-Compose项目是Docker官方提供的,实现对Docker集群快速编排的开源工具。

Docker-compose安装部署

方法一:直接下载二进制安装包(推荐)

# Github源
[root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

# Daocloud国内源 (推荐)
[root@localhost ~]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 赋予执行权限
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose

方法二:pip安装

[root@localhost ~]# yum install epel-release -y
[root@localhost ~]# yum install python-pip -y
[root@localhost ~]# pip --version
[root@localhost ~]# pip install --upgrade pip
[root@localhost ~]# pip install -U -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose

验证是否安装成功

[root@localhost ~]# docker-compose version 
docker-compose version 1.26.0, build d4451659
docker-py version: 4.2.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

Docker-compose常用命令整理

Docker-Compose 命令格式
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
 -f, --file FILE 指定使用的 Compose 模板文件,如果省略,默认为docker-compose.yml,可以多次指定;
 -p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名;
 --x-networking 使用 Docker 的可拔插网络后端特性;
 --x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge;    
 --verbose 显示更多调试信息;
 --log-level LEVEL 设置日志等级,可指定参数如下:DEBUG, INFO, WARNING, ERROR, CRITICAL
 -v, --version 打印版本信息并退出;
 version 更详细的打印版本信息;
授之以鱼不如授之以渔,学会使用命令帮助
以下三种方式均可查看具体命令使用帮助

下面就以 docker-compose --help 命令返回的结果进行一一解释各个命令的用法

[root@localhost ~]#  docker-compose --help
Commands:
  build    Build or rebuild services
  config   Validate and view the Compose file
  create   Create services
  down     Stop and remove containers, networks, images, and volumes
  events   Receive real time events from containers
  exec     Execute a command in a running container
  help     Get help on a command
  images   List images
  kill     Kill containers
  logs     View output from containers
  pause    Pause services
  port     Print the public port for a port binding
  ps       List containers
  pull     Pull service images
  push     Push service images
  restart  Restart services
  rm       Remove stopped containers
  run      Run a one-off command
  scale    Set number of containers for a service
  start    Start services
  stop     Stop services
  top      Display the running processes
  unpause  Unpause services
  up       Create and start containers
  version  Show the Docker-Compose version information
docker-compose build [options] [–build-arg key=val…] [SERVICE…]

构建或者重建项目中的容器
选项如下:

--build-arg key=val     设置服务的 build-time 变量,即设置服务的构建时间。
--compress              通过gzip构建上下文环境
--force-rm              强制删除构建过程中的容器.
-m, --memory MEM        设置构建容器的内存限制.
--no-cache              构建镜像的过程当中不使用缓存.
--no-rm                 当成功后构建容器后,保留构建过程中的容器,不移除.
--parallel              并行的构建镜像.
--progress string       设置进程的输出类型 (auto, plain, tty).
                        EXPERIMENTAL flag for native builder.
                        To enable, run with COMPOSE_DOCKER_CLI_BUILD=1)
--pull                  始终通过pull来获取最新镜像
-q, --quiet             安静模式,不显示输出信息。
docker-compose config [options]

验证并查看compose文件配置的正确性。
选项如下:

--resolve-image-digests  将镜像标签标记为摘要.
--no-interpolate         不使用环境变量.
-q, --quiet              只验证配置,不输出信息.
--services               一行一行的打印服务名.
--volumes                一行一行的打印数据卷名.
--hash="*"               一行一行打印服务使用的bash.
docker-compose create [options] [SERVICE…]

创建服务中的容器
选项如下:

--force-recreate       重新创建容器,即使配置文件和镜像都没有变化,不能和--no-create参数一起使用.
--no-recreate          如果容器已经存在则不重建,不能和--force-recreate参数一起使用.
--no-build             不构建镜像,即使镜像缺失.
--build                创建容器之前先构建镜像.
docker-compose down [options]

停止 up 命令所启动的容器,并移除网络

选项如下:

--rmi type          删除镜像.当type为all时删除所有镜像;当type为local时,只删除那些没有标签名字的镜像
                         
-v, --volumes           删除已经在容器中声明的数据卷和匿名附在容器上的数据卷.
--remove-orphans        移除没有在compose file定义的服务中的容器.
-t, --timeout TIMEOUT   定义一个超时时间,默认是10s.
docker-compose events [options] [SERVICE…]

接收容器中的事件
选项如下:
–json 以json流的方式输出

docker-compose exec [options] [-e KEY=VAL…] SERVICE COMMAND [ARGS…]

选项如下:

-d, --detach      类似docker的-d选项,后台运行.
--privileged      为容器获取特权.
-u, --user USER   指定容器内运行的用户.
-T                禁止分配tty终端,exec参数默认会分配tty终端.
--index=index     当一个服务存在多个容器时,可以登录到任意一个容器,默认值为1.
-e, --env KEY=VAL 设置环境变量,可重复使用,API版本必须>=1.25
-w, --workdir DIR 指定命令运行的工作空间.
docker-compose images [options] [SERVICE…]

列出镜像
选项如下:

-q, --quiet  只列出镜像的Image Id
docker-compose kill [options] [SERVICE…]

强制杀死容器
选项如下:

-s SIGNAL         指定发送给容器的信号.
docker-compose logs [options] [SERVICE…]

查看容器的输出内容
选项如下:

--no-color          关闭颜色输出.
-f, --follow        跟踪日志,实时输出.
-t, --timestamps    显示时间戳.
--tail="all"        指定从每个容器结尾出开始显示的行数,默认是为:all.
docker-compose pause [SERVICE…]

暂停一个服务

docker-compose unpause [SERVICE…]

恢复一个服务

docker-compose port [options] SERVICE PRIVATE_PORT

显示某个容器端口所映射的端口
选项如下:

--protocol=proto  指定协议类型,默认为tcp
--index=index     如果一个服务存在多个容器,则指定容器的序号,默认为1.
docker-compose ps [options] [SERVICE…]

列出容器
选项如下:

-q, --quiet          只列出ID
--services           列出服务
--filter KEY=VAL     通过指定的值过滤服务
-a, --all            展示所有容器,包括停止的
docker-compose pull [options] [SERVICE…]

根据compose file定义的内容为服务拉取镜像,但是不启动容器
选项如下:

--ignore-pull-failures  忽略拉取镜像过程中的错误.
--parallel              同时拉取多个镜像,默认开启此参数.
--no-parallel           关闭同时拉取多个镜像选项.
-q, --quiet             安静模式,不打印信息
--include-deps          同时拉取声明为依赖的服务镜像
docker-compose push [options] [SERVICE…]

推送服务依赖的镜像。
选项如下:

--ignore-push-failures  忽略推送镜像过程中的出现的错误.
docker-compose restart [options] [SERVICE…]

重启运行中的容器
选项如下:

-t, --timeout TIMEOUT      指定重启前停止容器的超时时间,默认为10s.
docker-compose rm [options] [SERVICE…]

移除停止的容器
选项如下:

-f, --force   强制删除,无需确认
-s, --stop    如果有需要,在删除之前先停止容器
-v            删除使用挂载在容器上的数据卷
-a, --all     弃用,没影响.
docker-compose run [options] [-v VOLUME…] [-p PORT…] [-e KEY=VAL…] [-l KEY=VALUE…] SERVICE [COMMAND] [ARGS…]

在服务上运行一次性的命令

选项如下:

-d, --detach          后台运行,打印新创建容器的名字.
--name NAME           为容器指定名字
--entrypoint CMD      覆盖镜像中默认运行的命令.
-e KEY=VAL            设定环境变量,可多次使用
-l, --label KEY=VAL   添加或覆盖标签,可重复使用
-u, --user=""         指定容器运行的用户或者UID
--no-deps             不启动关联容器.
--rm                  运行命令后自动删除容器, -d模式下将忽略.
-p, --publish=[]      映射容器端口到本地主机
--service-ports       配置服务端口并映射到本地主机.
--use-aliases         使用网络的别名.
-v, --volume=[]       绑定数据卷,默认为[]
-T                    不分配tty.
-w, --workdir=""      指定容器中的工作目录
docker-compose scale [options] [SERVICE=NUM…]

设置服务运行的容器个数,通过service=num 值设定
选项如下:

-t, --timeout TIMEOUT     指定重启前停止容器的超时时间,默认为10s
docker-compose start [SERVICE…]

启动已经存在的容器

docker-compose stop [options] [SERVICE…]

停止正在运行的容器,但不删除.
选项如下:

-t, --timeout TIMEOUT     指定重启前停止容器的超时时间,默认为10s.
docker-compose top [SERVICE…]

列出服务中包含的所有的进程

docker-compose up [options] [–scale SERVICE=NUM…] [SERVICE…]

为服务构建、(重新)创建、启动容器或者附着到容器。除非它们已经在运行,否则此命令还会启动任何关联的服务。

选项如下:

-d, --detach               在后台运行服务容器,打印新容器名。不与--abort-on-container-exit兼容.
--no-color                 不使用颜色来区分不同的服务的控制台输出.
--quiet-pull               安静模式,不带打印过程信息
--no-deps                  不启动关联服务.
--force-recreate           重建容器,即使他们的镜像和配置文件都没变化.
--always-recreate-deps     重新构建依赖镜像,不与--no-recreate兼容.
--no-recreate              如果容器已经存在了,则不重建,不能与--force-recreate兼容.
--no-build                 不再构建镜像,即使缺失.
--no-start                 创建完成不启动服务.
--build                    在启动容器前构建镜像.
--abort-on-container-exit  如果有任意容器停止了,就停止所有的容器,不与-d兼容.
--attach-dependencies      连接到附着的容器
-t, --timeout TIMEOUT      指定当连接容器或容器已经运行时或停止容器时候的超时时间(默认为 10 秒)
-V, --renew-anon-volumes   重新创建匿名卷,而不是从以前的容器中检索数据.
--remove-orphans           移除compose file文件服务中未定义的容器.
--exit-code-from SERVICE   返回所选服务的退出代码,同时包含--abort-on-container-exit参数功能.
--scale SERVICE=NUM        覆盖Compose文件中存在的`scale`设置,将服务扩展到NUM所设置的数量.