重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

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

时间:2020-11-19 20:40:03 作者:重庆seo小潘 来源:
Docker-Compose run命令可以针对服务运行一次性命令,使用run命令可以从具有由服务定义的配置的新容器中启动,包括卷,链接和其他详细信息。 语法格式 Usage: run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND

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

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