Docker学习笔记:docker-compose

本文更新于2021-07-22,使用Docker Compose 1.27.4,操作系统为Debian 10。

说明:本文中,大写为自定义变量,根据实际情况填写。使用<>引起表示内容可选,|表示使用左侧或右侧内容,...表示重复之前内容。

Docker Compose是一个简单的容器编配工具,可管理单台主机上的Docker。

安装

官方文档参阅:https://docs.docker.com/compose/install/

本文使用Docker Compose 1.27.4,其它版本需自行指定。

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker-compose命令

官方文档参阅:https://docs.docker.com/compose/reference/overview/

可使用以下选项:

  • --help:查看帮助。等同于docker-compose help
  • --version:查看版本。类似于docker-compose version

默认会连接到本地的Docker引擎,也可使用DOCKER_HOST环境变量指定。

可执行以下子命令,大多数子命令需在docker-compose.yml文件所在的目录下执行。各子命令可使用以下公共选项:

  • --help:查看子命令的帮助。

下文中自定义变量的说明:

  • SERVICE:服务名,即docker-compose.yml文件中指定的服务的名字。

docker-compose build

编译构建服务。

docker-compose build [OPTIONS] [SERVICE[ ...]]

OPTIONS可为:

  • --build-arg KEY=VALUE:为服务设置编译时的变量。
  • --force-rm:总是删除中间过程产生的容器。
  • --no-cache:编译构建时不使用缓存。
  • --pull:总是拉取最新的镜像版本。

docker-compose down

下线服务,同时删除容器、网络、磁盘卷、镜像。

docker-compose down [OPTIONS]

OPTIONS可为:

  • --remove-orphans:删除未在docker-compose.yml文件中定义的服务的容器。
  • --rmi all|local:删除镜像。必需为其一:all为删除所有服务的镜像。local为删除未在docker-compose.yml文件中自定义标签的镜像。
  • -v|--volumes:删除docker-compose.yml中定义的磁盘卷和匿名磁盘卷。

默认只会移除:docker-compose.yml定义的容器和网络(如使用默认网络,也会被移除)。

docker-compose help

查看帮助。

docker-compose help [SUBCMD]

SUBCMD即本文描述的子命令。docker-compose help SUBCMD等同于docker-compose SUBCMD --help

docker-compose kill

向服务的容器发送信号,可用来杀死服务的容器。

docker-compose kill [SERVICE[ ...]]

docker-compose logs

查看服务的容器的日志。

docker-compose logs [SERVICE[ ...]]

每一行带有缩短的服务名字(使用docker-compose.yml文件中指定的服务名作为前缀,使用数字作为后缀,如:name_1),并将各服务的日志合并输出。

docker-compose ps

列出服务的容器。

docker-compose ps [SERVICE[ ...]]

返回包括以下列:

  • Name:服务名字。使用docker-compose.yml所在的目录名和文件中指定的服务的名字作为前缀,使用数字作为后缀,如:dir_name_1。
  • Command:启动服务的命令。
  • State:服务的状态。
  • Ports:映射的端口。

docker-compose rm

删除已停止的服务的容器。

docker-compose rm [OPTIONS] [SERVICE[ ...]]

OPTIONS可为:

  • -f|--force:强制删除,不进行确认。默认会提示进行确认。
  • -s|--stop:在删除容器前先停止容器。
  • -v:删除匿名磁盘卷。默认不会删除。

docker-compose run

docker-compose run [OPTIONS] SERVICE [COMMAND [ARG[ ...]]

OPTIONS可为:

  • -d|--detach:在后台运行容器。
  • --entrypoint COMMAND [ARG[ ...]]:覆盖构建镜像时的ENTRYPOINT指令。
  • -e KEY=VALUE:设置环境变量。可使用多次。
  • --name NAME:容器的名字。
  • --no-deps:不编译构建、创建(或重新创建)、启动其关联的服务。
  • --rm:容器运行退出后自动删除容器,忽略后台运行的模式。
  • -p|--publish:映射容器中的端口至宿主机端口。
  • --service-ports:使用服务可用的端口执行命令,并映射到宿主机。
  • -T:禁用伪tty终端。默认会分配一个伪tty终端。
  • -u|--user USER|UID[:GROUP|GID]:以容器内部哪个用户运行,覆盖构建镜像时的USER指令。
  • -v|--volume:挂载磁盘卷。
  • -w|--workdir DIR:设置容器启动时的工作目录,覆盖构建镜像时的WORKDIR指令。

docker-compose start

启动服务已经停止的容器。

docker-compose start [SERVICE[ ...]]

docker-compose stop

停止服务正在运行的容器,但不删除容器。

docker-compose stop [OPTIONS] [SERVICE[ ...]]

docker-compose up

为服务编译构建、创建(或重新创建)、启动容器,并连接到容器将日志输出合并到一起。如果服务的容器正在运行,则会挑选出改变的内容停止并重新创建容器。该命令退出时,所有容器也会停止。

docker-compose up [OPTIONS] [SERVICE[ ...]]

OPTIONS可为:

  • --abort-on-container-exit:如果有一个容器停止,则停止所有容器。与-d作用相反。
  • --build:在启动容器之前编译构建镜像。
  • -d|--detach:在后台运行容器。与--abort-on-container-exit作用相反。
  • --exit-code-from SERVICE:返回指定服务的容器退出码。可与--abort-on-container-exit配合使用。
  • --force-recreate:强制重新创建容器,即使没有改变。与--no-recreate作用相反。
  • --no-build:不重新编译构建镜像,即使镜像已不存在。
  • --no-color:使用黑白输出。
  • --no-deps:只编译构建、创建(或重新创建)、启动改变了的服务,不编译构建、创建(或重新创建)、启动其关联的服务。
  • --no-recreate:不重新创建容器,即使有改变。与--force-recreate作用相反。
  • --remove-orphans:删除未在docker-compose.yml文件中定义的服务的容器。
  • --scale SERVICE=NUM:伸缩服务的实例至指定的数量,会覆盖docker-compose.yml文件中定义的scale值。
  • -t|--timeout DURATION:当容器在运行时停止容器的超时时间,单位为秒。默认为10。

docker-compose.yml文件

官方文档参阅:https://docs.docker.com/compose/compose-file/

示例:

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
posted @ 2020-11-29 22:02  garvenc  阅读(595)  评论(0编辑  收藏  举报