云计算核心技术Docker教程:Docker Compose run命令详解

注册 Vultr VPS 送你10美金 免费玩4个月

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

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

注册 Vultr VPS 送你10美金 免费玩4个月