互联网技术 / 互联网资讯 · 2023年11月2日 0

Docker Compose run命令详解

Docker-Compose Run命令可以针对服务运行一次性命令,使用Run命令可以从具有由服务定义的配置的新容器中启动,包括卷,链接和其他详细信息。

语法格式

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=”” 指定运行的用户

–no-deps 不启动link服务,只启动Run的服务.

–RM 运行后删除容器,后台运行模式除外(-d).

-p, –publish=[] 开放端口

–service-ports compose文件中配置什么端口,就映射什么端口.

–use-aliases 使用网络服务的网络别名(s)容器连接。

-v, –volume=[] 绑定挂载卷

-T 禁用TTY.

-w, –workdir=”” 设置工作目录

例如,以下命令启动web服务并bash作为其命令运行。

docker-compose Run web bash

您使用的命令Run从具有由服务定义的配置的新容器中启动,包括卷,链接和其他详细信息。但是,有两个重要的区别。

首先,通过的命令将Run覆盖服务配置中定义的命令。例如,如果web服务配置以bash开头,则将其docker-compose Run web Python app.py覆盖Python app.py。

第二个区别是该docker-compose Run命令不会创建服务配置中指定的任何端口。这可以防止端口与已打开的端口发生冲突。如果您确实想要创建服务的端口并将其映射到主机,请指定–service-ports标志:

docker-compose Run –service-ports web Python Manage.py Shell

另外,可以使用–publish或-p选项指定手动端口映射,就像使用时一样docker Run:

docker-compose Run –publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web Python Manage.py Shell

如果启动使用链接配置的服务,则该Run命令首先检查链接服务是否正在运行,并在停止时启动该服务。一旦所有链接的服务都在运行,则Runexec将执行您传递的命令。例如,您可以运行:

docker-compose Run db psql -h db -U docker

这将为链接的db容器打开一个交互式PostgreSQL Shell 。

如果您不希望Run命令启动链接的容器,请使用–no-deps标志:

docker-compose Run –no-deps web Python Manage.py Shell

如果要在覆盖容器的重新启动策略的同时运行后除去该容器,请使用–RM标志:

docker-compose Run –RM web Python Manage.py db upgrade

这将运行数据库升级脚本,并在完成运行后删除容器,即使在服务配置中指定了重新启动策略也是如此。