Если его нормально, чтобы контейнер был отключен, почему бы просто не удалить и запустить снова без переключателей портов?
Если вам нужно сделать это без удаления контейнеров, вы можете просто изменить основные изменения iptables.
# Will list the rules
iptables -L
# Will delete the rule you want to remove
iptables --delete [chain] <Rule definition>
В целом ваши данные всегда должны находиться в одном из 3 мест
- данных только контейнер, который может быть связан с перезапущенным контейнером службы.
- Том, определенный в контейнере обслуживания, который может быть связан с новым контейнером для резервного копирования. См., Например, here.
- В томе, где установлен хост, чтобы вы могли перезапустить контейнеры и установить одно и то же местоположение в новые контейнеры.
С одним из этих трех способов возобновления услуг становится легко, и это должно быть стандартным, поскольку микроуслуги должны быть спроектированы таким образом, чтобы они могли быстро опускаться и восстанавливаться. Эти подходы также ускорят ваше приложение, поскольку файловая система объединения по умолчанию работает медленнее, чем обычные файловые системы, которые используются для томов.
Если вам необходимо восстановить данные из контейнера, в котором вы не планировали правильные тома, вы можете использовать функцию экспорта докеров для экспорта состояния вашего контейнера. Затем импортируйте его в новый контейнер с установленным томом. Скопируйте свои критические данные из контейнера в том.
В этом случае я удалил старый контейнер и создал новый, поскольку gitlab хранит данные в контейнере данных. Но если в контейнере есть изменения, как я могу гарантировать, что новый контейнер будет иметь изменения? –
Обновление ответа, поскольку это слишком долго для комментария. –
Благодарим вас за подробный ответ. Это было действительно полезно. –