千家信息网

docker-compose命令介绍和使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,docker-compose 的概述docker-compose技术,就是通过一个 .yml 配置文件,将所有的容器的部署方法、文件映射、容器连接等等一系列的配置写在一个配置文件里,最后只需要执行do
千家信息网最后更新 2026年11月02日docker-compose命令介绍和使用

docker-compose 的概述

docker-compose技术,就是通过一个 .yml 配置文件,将所有的容器的部署方法、文件映射、容器连接等等一系列的配置写在一个配置文件里,最后只需要执行docker-compose up命令就会像执行脚本一样的去一个个安装容器并自动部署他们,极大的便利了复杂服务的部署。

docker-compose 的工作流程

1、用一个定义应用程序的环境,Dockerfile这样它就可以在任何地方再现。
2、定义组成应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。
3、运行docker-compose up和撰写启动并运行整个应用程序。

一、命令对象与格式

对于Compose来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。

docker-compose命令的基本的使用格式是:

docker-compose [-f ...] [options] [COMMAND] [ARGS...]

二、命令选项

  • -f:指定使用的compose模板文件,默认为当前目录下的docker-compose.yaml文件,可以多次指定。
  • -p:指定项目的名称,默认将使用所在目录名称作为项目名。
  • --verbose:输出更多调试信息。
  • -v:打印版本信息并退出。

三、命令使用说明

1、build--构建(重新构建)项目中的服务容器

命令格式为:docker-compose build [options] [SERVICE...]。

服务容器一旦构建后,将会带上一个标记名,例如对于web项目中的一个db容器,可能是web_db。

可以随时在项目目录下运行docker-compose build 来重新构建服务。

上述命令选项包括:

  • --force-rm:删除构建过程中的临时容器。
  • --no-cache:构建镜像过程中不使用cache(这会加长构建过程)。
  • --pull:始终尝试通过pull来获取更新版本的镜像。

2、config--检测compose文件的错误

验证Compose文件格式是否正确,若正确则显示配置,若格式错误显示错误原因。

命令格式如下:

$ docker-compose config

3、up--启动服务

格式为:docker-compose up [options] [SERVICE...]。

该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

链接的服务都将会被自动启动,除非已经处于运行状态。

可以说,大部分时候都可以直接通过该命令来启动一个项目。

默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。

当通过 Ctrl-C 停止命令时,所有容器将会停止。

如果使用 docker-compose up -d,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。

默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。如果用户不希望容器被停止并重新创建,可以使用 docker-compose up --no-recreate。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。

选项:

  • -d:在后台运行服务容器。
  • --no-color:不使用颜色来区分不同的服务的控制台输出。
  • --no-deps:不启动服务所链接的容器。
  • --force-recreate:强制重新创建容器,不能与 --no-recreate 同时使用。
  • --no-recreate:如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
  • --no-build:不自动构建缺失的服务镜像。
  • -t:停止容器时候的超时(默认为 10 秒)。

3、down--停止容器

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

4、images--列出项目中所包含的镜像

$ docker-compose images    # 列出项目中所包含的镜像$ docker-compose -p tt images      # 若不是默认的项目名称,则需要指定项目名称

5、logs--查看服务容器的日志

格式为:docker-compose logs [options] [SERVICE...]。

默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。可以通过 --no-color 来关闭颜色。

该命令在调试问题的时候十分有用。

$ cat docker-compose.yml           # compose文件如下version: '3'services:  web:    build: .    ports:      - "5001:5000"  redis:    image: "redis:alpine"$ docker-compose logs        #不加服务名称则会显示项目中所有服务的日志,不同服务之间的日志以不同的颜色区分$ docker-compose logs web      #也可以指定项目中的服务名称,查看指定服务的日志$ docker-compose logs redis     #同上

6、kill--发送 SIGKILL 信号来强制停止服务容器

格式为 docker-compose kill [options] [SERVICE...]。

支持通过 -s 参数来指定发送的信号,例如通过如下指令发送 SIGINT 信号。

$ docker-compose  kill -s SIGINT web     #  kill掉指定的服务$ docker-compose -p tt kill -s SIGINT web   #若不是默认的项目名称,则需要-p指定项目名称

8、port--查看某个容器端口所映射的公共端口

格式为:docker-compose port [options] SERVICE PRIVATE_PORT。

选项:

  • --protocol=proto 指定端口协议,tcp(默认值)或者 udp。
  • --index=index 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1)。
[root@node02 test]# docker-compose port web 50000.0.0.0:5001#上面的结果表示将web服务的5000端口映射到了宿主机的5001端口

9、ps--列出项目中目前的所有容器

格式为:docker-compose ps [options] [SERVICE...]。

$ docker-compose ps -q web    #查看某一个服务的ID$ docker-compose ps       #查看项目中所有服务的容器信息

选项:

  • -q:只打印容器的 ID 信息。

10、restart--重启项目中的服务

格式为:docker-compose restart [options] [SERVICE...]。

选项:

  • -t, --timeout TIMEOUT 指定重启前停止容器的超时(默认为 10 秒)。

举个栗子:

$ docker-compose restart        #重启当前项目中的所有服务$ docker-compose restart web     #重启当前项目中的web服务

11、rm--删除所有停止状态的服务容器

格式为 docker-compose rm [options] [SERVICE...]。

选项:

  • -f:不要求确认移除。
  • -s:在删除前停止项目中的所有容器。
  • -v:删除任何附加到容器的匿名卷。

12、run--在指定服务上运行一个命令

格式为:docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]。

例如:

$ docker-compose run web ping www.baidu.com

上面的指令将启动项目中的web服务容器,并执行ping www.baidu.com 命令。

默认情况下,如果存在关联,则所有关联的服务将会自动被启动,除非这些服务已经在运行中。

如果不希望自动启动关联的容器,可以使用 --no-deps 选项,例如

$ docker-compose run --no-deps web ping www.baidu.com

选项:

  • -d:后台运行容器。
  • --name:为容器指定一个名字。
  • --entrypoint :覆盖默认的容器启动指令。
  • -e KEY=VAL :设置环境变量值,可多次使用选项来设置多个环境变量。
  • -u:指定运行容器的用户名或者 uid。
  • --no-deps :不自动启动关联的服务容器。
  • --rm:运行命令后自动删除容器,d 模式下将忽略。
  • -p:映射容器端口到本地主机。
  • --service-ports:配置服务端口并映射到本地主机。
  • -T:不分配伪 tty,意味着依赖 tty 的指令将无法运行。

13、scale--设置指定服务运行的容器个数

格式为:docker-compose scale [options] [SERVICE=NUM...]。

通过 service=num 的参数来设置数量。例如:

$ docker-compose scale web=3 redis=2

将启动 3 个容器运行 web 服务,2 个容器运行redis服务,但是需要注意的是,docker-compose中定义ports字段时,就不可以指定映射到宿主机的端口了,否则只可以启动一个。

一般的,当指定数目多于该服务当前实际运行容器,将新创建并启动容器;反之,将停止容器。

选项:
-t:停止容器时候的超时(默认为 10 秒)。

14、stop--停止处于运行状态的容器

格式为 docker-compose stop [options] [SERVICE...]。

停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。

栗子:

$ docker-compose stop web     #停止当前项目中的web服务$ docker-compose stop         #停止当前项目中所有服务

选项:

  • -t:停止容器时候的超时(默认为10秒)

15、start--启动被stop的服务容器

格式为:docker-compose start [SERVICE...]。

栗子:

$ docker-compose start

16、top--查看各个服务容器内运行的进程

$ docker-compose top    #查看项目中所有服务的进程$ docker-compose top web   #查看项目中web服务的进程

17、pause--暂停一个服务容器

格式为:docker-compose pause [SERVICE...]。

暂停一个服务容器。

如下:

$ docker-compose -p tt pause redis    # -p选项是指定项目名称#若是默认的项目名称,则可以忽略-p选项$ docker-compose pause        #暂停项目中的所有服务

18、unpause--恢复处于暂停状态中的服务

格式为 docker-compose unpause [SERVICE...]。

栗子:

$ docker-compose unpause

-------- 本文至此结束,感谢阅读 --------

服务 容器 项目 命令 运行 格式 名称 文件 端口 状态 镜像 不同 信息 时候 环境 关联 配置 后台 对象 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州大一互联网络科技有限公司 科技互联网企业 美国互联网科技巨头监管 互联网科技金融公司 北京互联网络科技有限公司 亿人帮互联网科技 互联网科技热点资讯 互联网系的金融科技公司 顶级互联网科技成果有哪些 玉溪新华互联网科技好不好 卓翼科技产业互联网合作 每天都有哪些好的互联网科技 萌小萌互联网科技河南有限公司 中国互联网公司的科技投入 北京天晋互联网科技有限公司 唐山双旺合互联网科技产业园 玉溪新华互联网科技怎么选 优雇互联网科技有限公司 上海旺乐尼互联网科技有限公司 互联网企业和网络科技有限公司 迪茉互联网科技 四川狮子座互联网科技 一五八零互联网科技 互联网科技公司名称 天扬科技互联网广告 联恩商钥互联网科技有限公司 互联网科技产品 岳阳华臻互联网科技有限公司 扫呗互联网科技有限公司 中国新注册互联网科技
0