十、Compose命令

于2021年10月9日学习,注意此篇内容是建立在上一篇的案例上的。

一、compose命令

废话不多说,先来查看一下帮助

docker-compose help
docker-compose [COMMAND] --help
docker-compose help [COMMAND]

对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。

如果没有特别的说明,命令对象将是项目,会对项目中所有的服务生效。

语法

docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]

:'
[-f=<arg>...]:指定模板文件
[options]:选项
[COMMAND]:命令
[ARGS...]:参数
'

常用选项

-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。
--verbose 输出更多调试信息。
-v, --version 打印版本并退出。

案例

docker-compose -f docker-compose-base.yml -f docker-compose-prod.yml 
docker-compose -p web
docker-compose --verbose
docker-compose -v

使用docker-compose命令需要进入项目文件夹中才能使用

二、管理命令

up

自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

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

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

如果服务容器已经存在,docker-compose up 将会停止容器,然后重新创建,以保证使用最新 docker-compose.yml 文件内容。

docker-compose up 
#只启动处于停止状态的容器,忽略已经运行的服务
docker-compose up --no-recreate
#重新创建web服务,不影响web服务依赖的其他服务
docker-compose up --no-deps -d web

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

build

构建或重新构建项目中的服务容器;第一次运行为构建服务容器,第二次运行为重新构建。

服务容器一旦构建后,将会带上一个标记名,这个标记名就是创建的项目文件夹名;例如 web 项目文件夹中的一个名为db的容器,最后使用docker ps查看容器名为web_db。

语法

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

案例

docker-compose build

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

start

启动已经存在的服务容器,服务容器必须存在,也就是说需要先构建容器后才能使用该命令。

docker-compose start web

stop

停止已经处于运行状态的容器。

docker-compose start web

:'
-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
'

restart

重启项目中的服务。

#重启所有服务
docker-compose restart
#只重启web服务
docker-compose restart web

:'
-t, --timeout TIMEOUT 指定重启容器超时时间(默认为 10 秒)。
'

pause

暂停一个服务容器。

docker-compose pause web

unpause

恢复处于暂停状态中的服务。

docker-compose unpause web

kill

通过发送 SIGKILL 信号来强制停止服务容器。

#杀死全部容器
docker-compose kill -s SIGINT

#杀死web服务容器
docker-compose kill -s SIGINT web

rm

删除所有(停止状态的)服务容器。

需要先执行 docker-compose stop 命令来停止容器才能使用。

docker-compose rm
docker-compose rm web

:'
-f, --force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
-v 删除容器所挂载的数据卷。
'

down

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

docker-compose down

可以看到compose会创建一个以项目名命名,名为web_default的网络,以后介绍。

三、常用命令

config

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

需要在项目文件夹中运行

docker-compose config

image-20211009170045249

run

在指定服务上执行一个命令。

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

#启动ubuntu服务容器ping百度
docker-compose run ubuntu ping www.baidu.com

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

exec

进入指定的容器,这里的web是上一篇博文案例中的web服务。

#查看运行的容器
docker-compose ps

#进入web容器
docker-compose exec web sh

#执行ping命令
docker-compose exec web ping www.baidu.com

#当服务有多个容器时,使用--index指定第几个,默认是第一个
docker-compose exec --index=2 web sh

效果如下

image-20211009173028884

images

列出 Compose 文件中包含的镜像。

docker-compose images

image-20211009222827251

logs

查看服务容器的日志。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。

#查看web服务容器的日志
docker-compose logs web

port

打印某个容器端口所映射的公共端口。

docker-compose port web 5000

:'
其他选项
--protocol=proto 指定端口协议,tcp(默认值)或者 udp。
--index=index 如果同一服务存在多个容器,指定命令对象容器的序号(默认为 1)。
'

image-20211009230832137

注意这是将容器端口映射的宿主机端口打印出来,映射端口需要在docker-compose-base.yml文件中修改

ps

列出项目中目前的所有容器。

docker-compose ps
#只打印容器ID信息
docker-compose ps -q

image-20211010095546023

pull

拉取服务依赖的镜像。

#拉取全部服务镜像
docker-compose pull
#只拉取web服务镜像
docker-compose pull web

:"
--ignore-pull-failures 忽略拉取镜像过程中的错误。
"

push

推送服务依赖的镜像到 Docker 镜像仓库。

#推送全部服务镜像
docker-compose push
#只推送web服务镜像
docker-compose push web

scale

设置指定服务运行的容器个数。

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

#启动3个web服务容器,启动2个db服务容器
docker-compose scale web=3 db=2

:'
-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
'

top

查看各个服务容器内运行的进程。

docker-compose top web

version

打印版本信息。

docker-compose version

四、参考资料

docker入门到实战

今天的学习是为了以后的工作更加的轻松!
原文地址:https://www.cnblogs.com/tz90/p/12240793.html