2014-12-18 3 views
2

порта В настоящее время у меня есть контейнер, созданный сУдалить связывание из существующего 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 

Я хочу, чтобы удалить оба привязок порта 80 и 22 от изображения. Можно ли удалить привязку портов из существующего контейнера докеров?

NB: Взять контейнер в автономном режиме для снятия привязки.

ответ

1

Если его нормально, чтобы контейнер был отключен, почему бы просто не удалить и запустить снова без переключателей портов?

Если вам нужно сделать это без удаления контейнеров, вы можете просто изменить основные изменения iptables.

# Will list the rules 
iptables -L 

# Will delete the rule you want to remove 
iptables --delete [chain] <Rule definition> 

В целом ваши данные всегда должны находиться в одном из 3 мест

  1. данных только контейнер, который может быть связан с перезапущенным контейнером службы.
  2. Том, определенный в контейнере обслуживания, который может быть связан с новым контейнером для резервного копирования. См., Например, here.
  3. В томе, где установлен хост, чтобы вы могли перезапустить контейнеры и установить одно и то же местоположение в новые контейнеры.

С одним из этих трех способов возобновления услуг становится легко, и это должно быть стандартным, поскольку микроуслуги должны быть спроектированы таким образом, чтобы они могли быстро опускаться и восстанавливаться. Эти подходы также ускорят ваше приложение, поскольку файловая система объединения по умолчанию работает медленнее, чем обычные файловые системы, которые используются для томов.

Если вам необходимо восстановить данные из контейнера, в котором вы не планировали правильные тома, вы можете использовать функцию экспорта докеров для экспорта состояния вашего контейнера. Затем импортируйте его в новый контейнер с установленным томом. Скопируйте свои критические данные из контейнера в том.

+0

В этом случае я удалил старый контейнер и создал новый, поскольку gitlab хранит данные в контейнере данных. Но если в контейнере есть изменения, как я могу гарантировать, что новый контейнер будет иметь изменения? –

+0

Обновление ответа, поскольку это слишком долго для комментария. –

+0

Благодарим вас за подробный ответ. Это было действительно полезно. –

Смежные вопросы