从现有的Docker容器中删除端口绑定

Joy*_*abu 5 docker

目前,我有一个创建的容器

docker run --detach --name gitlab_app --restart=always --publish 192.168.0.200:80:80 --publish 192.168.0.200:22:22 --volumes-from gitlab_data gitlab_image
Run Code Online (Sandbox Code Playgroud)

我想同时删除端口绑定8022图像。是否可以从现有的Docker容器中删除端口绑定?

注意:可以使容器脱机以删除绑定。

Usm*_*ail 3

如果容器可以离线,为什么不直接删除并在没有端口开关的情况下再次运行呢?

如果您确实需要在不删除容器的情况下执行此操作,则只需修改底层 iptables 更改即可。

# Will list the rules
iptables -L

# Will delete the rule you want to remove
iptables --delete [chain] <Rule definition>
Run Code Online (Sandbox Code Playgroud)

一般来说,您的数据应始终位于以下三个位置之一

  1. 可以与重新启动的服务容器链接的纯数据容器。
  2. 在服务容器中定义的卷可以与新容器链接以进行备份。请参阅此处的示例。
  3. 在主机安装的卷中,以便您可以重新启动容器并将相同位置安装到新容器中。

使用这三种方法之一,重新启动服务变得很容易,这应该是标准的,因为微服务应该设计成可以经常停机和恢复。这些方法还将加快您的应用程序的速度,因为默认的联合文件系统比用于卷的普通文件系统慢。

如果您需要从未正确规划卷的容器中恢复数据,您可以使用 docker 导出功能导出容器的状态。然后将其导入具有主机安装卷的新容器中。将关键数据从容器内部复制到卷。