【问题标题】:Stop service running inside a docker container without stopping the whole container在不停止整个容器的情况下停止在 docker 容器内运行的服务
【发布时间】:2020-09-03 17:21:28
【问题描述】:

我有一个运行 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 服务在容器内停止,这可能吗?或者它是覆盖我的配置文件的替代解决方案?

【问题讨论】:

  • 我们通常不运行systemd 来保持应用程序在容器内运行。您可能需要停止容器以执行更改(可能在外部卷中)。您介意分享您正在使用的基础映像吗?
  • @GustavoKawamoto 我正在使用官方的 Couchbase 社区图片github.com/couchbase/docker/blob/…

标签: docker service couchbase


【解决方案1】:

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

如果你还没有,你可以从容器中复制配置文件

docker cp bumblebase:/opt/couchbase/etc/couchbase/static_config .

现在您可以使用您选择的编辑器编辑配置文件的本地副本。

最后,您可以停止、删除和重新创建容器。 docker run -v 选项可以将单个配置文件注入到容器中。

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

出于几个原因,servicesystemctl 之类的命令在 Docker 中根本不起作用。一般容器运行的服务器进程是作为主容器进程运行的前台进程;没有初始化系统或任何后台进程,如果服务器进程退出,容器将随之退出。

【讨论】:

  • 我能够通过使用您的解决方案启动容器来成功编写配置文件。可悲的是,我遇到了另一个问题,即通过这样做,我再也无法访问沙发底座了。如果我删除 -v 选项,它会回来(但我又被困在起点,即我无法从容器内设置我的自定义端口)。我有一个单独的帖子,我会在这方面更新。至少这解决了我修改配置文件的问题:)
猜你喜欢
  • 2013-09-22
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-03-04
  • 2018-04-13
  • 2021-02-27
  • 1970-01-01
相关资源
最近更新 更多