gpt4 book ai didi

docker - 在不停止整个容器的情况下停止在 docker 容器内运行的服务

转载 作者:行者123 更新时间:2023-12-02 19:15:27 26 4
gpt4 key购买 nike

我有一个运行 Couchbase 的 docker 容器,我需要对其执行一个操作,该操作需要 couchbase-server 服务暂时停止。
这是覆盖容器内的一些配置文件所必需的。操作步骤如下所述。

docker exec -it "bumblebase" bash -c "systemctl stop couchbase-server"

docker exec -it "bumblebase" bash -c "echo \"{rest_port, 3456}.\" >> \"/opt/couchbase/etc/couchbase/static_config\""

docker exec -it "bumblebase" bash -c "rm -rf /opt/couchbase/var/lib/couchbase/config/config.dat"

docker exec -it "bumblebase" bash -c "systemctl start couchbase-server"
运行它会给我以下错误;
Failed to connect to bus: No such file or directory
我只找到了一种解决方法,来自 following stackoverflow answer 。但是,我对修改 couchbase 默认图像并不满意,而且备用图像现在暂时被标记为无人维护。
我还从 couchbase documentation 尝试了这个备用命令:
docker exec -it "bumblebase" bash -c "service couchbase-server stop"
但后来我有另一个错误:
couchbase-server: unrecognized service
我只想让 couchbase-server 服务在容器内停止,有可能吗?还是覆盖我的配置文件的替代解决方案?

最佳答案

您通常不会停止容器中的进程,与停止整个容器本身分开。事实上,在这种情况下,删除并重新创建容器是很常见的。相应地,您不应该使用 docker exec编辑容器内的文件;这会在例行重启时丢失。
如果您还没有,您可以将配置文件从容器中复制出来

docker cp bumblebase:/opt/couchbase/etc/couchbase/static_config .
现在您可以使用您选择的编辑器编辑配置文件的本地副本。
最后,您可以停止、删除和重新创建容器。 docker run -v选项可以将单个配置文件注入(inject)容器。
docker stop bumblebase
docker rm bumblebase
docker run \
-d \
-p 8091-8094:8091-8094 -p 11210:11210 \
--name bumblebase \
-v $PWD/static_config:/opt/couchbase/etc/couchbase/static_config \
couchbase:community-6.6.0
出于几个原因, service 之类的命令或 systemctl基本上根本不在 Docker 中工作。一般容器运行的服务器进程是作为主容器进程运行的前台进程;没有初始化系统或任何后台进程,如果服务器进程退出,容器将随之退出。

关于docker - 在不停止整个容器的情况下停止在 docker 容器内运行的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63728699/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com