如何更改已经 运行 容器的 Docker 配置?
How to change Docker config of an already running container?
我已经安装了 Sentry onpremise,经过一段时间的修改,我让它开始工作,并使用命令行将 system.url-prefix
选项更改为正确的 URL。但是仍然存在两个问题:
- 此选项不持久
- 你不能对
mail.from
选项做同样的事情,它只能在运行之前设置。
有 3 个配置文件在运行,但并非所有文件都已注册,这让人感到困惑。
- sentry.conf.py
含有
SENTRY_OPTIONS['system.url-prefix'] = 'https://sentry.mydomain.com'
SENTRY_OPTIONS['mail.from'] = 'sentry@mydomain.com'
- config.yml
包含
mail.from: 'sentry@mydomain.com'
system.url-prefix: 'https://sentry.mydomain.com'
- docker-compose.yml
重新启动容器不会加载新配置。
Related issue。但是我不知道在评论中更改配置后要做什么 (SENTRY_OPTIONS['mail.from']
)
您需要使修改后的配置文件在容器内可见。
如果它们内置于映像中(可能通过 Dockerfile
中的 COPY 或 ADD),那么重新启动容器没有帮助,因为您是在旧映像上执行此操作。您应该重建映像,停止旧映像并启动新映像。相当烦人且容易出错的方式。
更好的方法是通过卷 "mount" 您的文件。 Docker 卷可以是单个文件,而不仅仅是目录。您可以在 docker-compose.yml
:
中添加 volumes
部分
my_container:
image: my_image
volumes:
sentry.conf.py:/full/path/to/sentry.conf.py/in/the/container
config.yml:/similar/full/path/to/config.yml
ports:
...
command: ...
您可能已经为这个特定容器定义了一些卷(例如保存持久数据),然后您只需为您的配置文件添加卷映射。
希望这对您有所帮助。新年快乐!
如果配置文件存储为 docker 配置,那么我发现本指南有效...
https://medium.com/@lucjuggery/about-using-docker-config-e967d4a74b83
- 基本上将更新添加为新配置
- 告诉服务删除旧配置,然后添加新配置作为要使用的配置。服务将重新启动
- 现在您可以删除旧的 docker 配置
这不是很好,如果你想用旧配置标识符命名新配置,你必须再次重复!
呜呜……
这是编辑现有 docker 容器配置的方法:
停止容器:
docker stop <container name>
编辑配置:
docker run -it -v /var/lib/docker:/var/lib/docker alpine vi $(docker inspect --format='/var/lib/docker/containers/{{.Id}}/config.v2.json' <container name>)
重启docker
我已经安装了 Sentry onpremise,经过一段时间的修改,我让它开始工作,并使用命令行将 system.url-prefix
选项更改为正确的 URL。但是仍然存在两个问题:
- 此选项不持久
- 你不能对
mail.from
选项做同样的事情,它只能在运行之前设置。
有 3 个配置文件在运行,但并非所有文件都已注册,这让人感到困惑。
- sentry.conf.py
含有
SENTRY_OPTIONS['system.url-prefix'] = 'https://sentry.mydomain.com'
SENTRY_OPTIONS['mail.from'] = 'sentry@mydomain.com'
- config.yml
包含
mail.from: 'sentry@mydomain.com'
system.url-prefix: 'https://sentry.mydomain.com'
- docker-compose.yml
重新启动容器不会加载新配置。
Related issue。但是我不知道在评论中更改配置后要做什么 (SENTRY_OPTIONS['mail.from']
)
您需要使修改后的配置文件在容器内可见。
如果它们内置于映像中(可能通过 Dockerfile
中的 COPY 或 ADD),那么重新启动容器没有帮助,因为您是在旧映像上执行此操作。您应该重建映像,停止旧映像并启动新映像。相当烦人且容易出错的方式。
更好的方法是通过卷 "mount" 您的文件。 Docker 卷可以是单个文件,而不仅仅是目录。您可以在 docker-compose.yml
:
volumes
部分
my_container:
image: my_image
volumes:
sentry.conf.py:/full/path/to/sentry.conf.py/in/the/container
config.yml:/similar/full/path/to/config.yml
ports:
...
command: ...
您可能已经为这个特定容器定义了一些卷(例如保存持久数据),然后您只需为您的配置文件添加卷映射。
希望这对您有所帮助。新年快乐!
如果配置文件存储为 docker 配置,那么我发现本指南有效...
https://medium.com/@lucjuggery/about-using-docker-config-e967d4a74b83
- 基本上将更新添加为新配置
- 告诉服务删除旧配置,然后添加新配置作为要使用的配置。服务将重新启动
- 现在您可以删除旧的 docker 配置
这不是很好,如果你想用旧配置标识符命名新配置,你必须再次重复!
呜呜……
这是编辑现有 docker 容器配置的方法:
停止容器:
docker stop <container name>
编辑配置:
docker run -it -v /var/lib/docker:/var/lib/docker alpine vi $(docker inspect --format='/var/lib/docker/containers/{{.Id}}/config.v2.json' <container name>)
重启docker