代码之家  ›  专栏  ›  技术社区  ›  Arnold Zahrneinder

Docker:在已创建的容器上更改端口绑定而不丢失数据

  •  1
  • Arnold Zahrneinder  · 技术社区  · 7 年前

    假设我有一个 MongoDb Sql Server 集装箱里有很多数据,突然(很可能)我需要换个港口!可能是因为突然的安全问题!我需要停止容器并在另一个端口上重新启动它。为什么Docker不允许我这样做,如果我再次运行图像,将创建一个新的容器,里面没有数据,这会导致很多混乱。

    是否有适当的内置解决方案?我所说的“正确”是指不需要备份数据库、将它们移出容器卷并再次还原它们的解决方案。合乎逻辑的东西,如 命令 它允许我更改转发端口,例如 -p 1433:1234 to 27017:1234 .

    2 回复  |  直到 7 年前
        1
  •  1
  •   sarath kumar    7 年前

    容器是图像的实例化。

    端口号是容器的实例化状态,因此只能在创建容器时更改。

        2
  •  -2
  •   fly2matrix    7 年前

    可以通过直接编辑/var/lib/docker/containers/[hash-of-the-container]/hostconfig.json处的hostconfig.json文件来更改端口映射

    您可以通过docker inspect命令来确定容器的哈希值,而“id”字段的值就是哈希值。

    1) stop the container 
    2) change the file
    3) restart your docker engine (to flush/clear config caches)
    4) start the container
    

    参考文献: How do I assign a port mapping to an existing Docker container?