在不重新创建容器的情况下修改docker-compose.yml的端口绑定

时间:2018-01-23 17:41:14

标签: docker ports

我已经从ubuntu:latest图片创建了一个容器。为此,我创建了这个docker-compose.yml

version: '2'

services:
  test_port:
    image: ubuntu:latest
    container_name: test_port
    tty: true
    privileged: true

现在我用docker exec -it <test_port_id> bash进入容器,然后我做了一些工作。突然我意识到我需要带有主机端口的绑定端口,所以我停止容器并将port部分添加到docker-compose.yml这样的部分:

version: '2'

services:
  test_port:
    image: ubuntu:latest
    container_name: test_port
    tty: true
    privileged: true
    ports:
        - "12345:12345"

如果现在我再次运行docker-compose up,Docker会重新创建容器test_port,并为其提供一个新ID,这就是Docker创建一个新容器,我在test_port中完成了所有工作。 。

我的问题是:有没有办法在docker-compose.yml的现有容器中绑定端口(或进行一般更改),而无需重新创建容器但更改生效了?

编辑:无法从容器创建图像。原始问题有volume部分用于时间同步(npt),如果我从此图像构造一个新容器,则会因此而抛出错误。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您必须了解可以随时创建或删除容器。因此,如果您必须修改容器中的文件,则必须在构建期间(dockerfile)或使用卷注入它们。这是您可以坚持更改的方式。