Docker重新启动多个Docker-Compose过程标签的特定服务

发布于 2025-02-13 07:41:28 字数 1464 浏览 1 评论 0原文

我有多个集合的两个Docker服务同时运行,因此我的docker ps日志看起来像这样:

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS              PORTS                                           NAMES
0a8e26682915   image_name:latest   "bash -c 'pip instal…"   About a minute ago   Up About a minute                                                   process_name_1_actions_1
ed8b56ff29b1   image_name:latest   "bash -c 'cd live-bo…"   About a minute ago   Up About a minute   0.0.0.0:5005->5005/tcp, :::5005->5005/tcp       process_name_1_model_1
6d8016412d12   image_name:latest   "bash -c 'pip instal…"   About a minute ago   Up About a minute                                                   process_name_2_actions_1
128d3605297a   image_name:latest   "bash -c 'cd live-bo…"   About a minute ago   Up About a minute   0.0.0.0:5006->5005/tcp, :::5006->5005/tcp       process_name_2_model_1

请注意,这些服务的名称具有标签。我想创建一个可以通过标签循环遍历这些过程集的Shell脚本,并重新启动action_1服务。类似:

declare -a arr=("process_1" "process_2")

for i in "${arr[@]}"
do
    # here, restart only the 'actions_1' service of process i.
done

为此的理由是,标题为_MODEL_1的过程需要很长时间才能产生。标题为_actions_1的过程需要经常重新启动,并且不需要很长时间才能产生。因此,运行docker-compose,然后是docker-compose是一个非常乏味的过程。

I have multiple sets two of Docker services running simultaneously, so my docker ps logs look something like this:

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS              PORTS                                           NAMES
0a8e26682915   image_name:latest   "bash -c 'pip instal…"   About a minute ago   Up About a minute                                                   process_name_1_actions_1
ed8b56ff29b1   image_name:latest   "bash -c 'cd live-bo…"   About a minute ago   Up About a minute   0.0.0.0:5005->5005/tcp, :::5005->5005/tcp       process_name_1_model_1
6d8016412d12   image_name:latest   "bash -c 'pip instal…"   About a minute ago   Up About a minute                                                   process_name_2_actions_1
128d3605297a   image_name:latest   "bash -c 'cd live-bo…"   About a minute ago   Up About a minute   0.0.0.0:5006->5005/tcp, :::5006->5005/tcp       process_name_2_model_1

Note that the names of these services have tags. I would like to create a shell script which can loop through these sets of processes by their tags, and restart the actions_1 service. Something like:

declare -a arr=("process_1" "process_2")

for i in "${arr[@]}"
do
    # here, restart only the 'actions_1' service of process i.
done

Justification for this is that the processes titled _model_1 takes a long time to spawn. The process titled _actions_1 needs to be restarted often, and does not take a long time to spawn. For this reason, running docker-compose down followed by docker-compose up is a very tedious process.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青朷 2025-02-20 07:41:29

使用此命令

Docker PS -Format'{{.names}}} {{.id}}}'| awk' {if($ 1〜“ _actions_1”)打印$ 2;}'| XARGS -P 10 docker restart

描述::

docker ps -format'{{.names}}} {.ID}}}:列出一个只有2个字段的当前容器 - 名称&amp ; id

awk:通过正则匹配,请检查$ 1 IE映像名称,然后打印相应的$ 2 IE容器ID

XARGS在输出时逐一执行指定的命令。 -p 10最多可以并行执行10个重新启动,以加快速度。

Use this command

docker ps --format '{{.Names}} {{.ID}}' | awk '{if ($1 ~ "_actions_1") print $2;}' | xargs -P 10 docker restart

Description ::

docker ps --format '{{.Names}} {{.ID}}: Lists current containers running with only 2 fields - name & id

awk: Checks $1 i.e. image name via regex, if matches, then prints corresponding $2 i.e. container id

xargs Executes specified command one by one upon the output. -P 10 executes 10 restarts in parallel at most, to speed things up.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文