Рассмотрим ситуацию, когда у вас есть набор услуг, работающих вместе с Docker-Compose. Теперь, для одной из ваших услуг, вы хотите, чтобы один каталог услуг был экспортирован и синхронизирован с хостом. С другой стороны, вы хотите иметь объем для этого каталога. (например, загрузки, загрузки).
В этом посте показано, как добавить объем в работающий контейнер, не позволяя другим службам сети снизиться.
Шаги
1. Копировать содержимое каталога из контейнера 2 Создайте новое изображение из работающего контейнера (Commit) 3. Остановите и удалите работающий контейнер 4 Создайте контейнер с изображения и укажите громкость и сеть
Шаг 1 — Копировать
Если Path, где мы собираемся добавить том, не пуст, то обязательно скопируйте контент в систему хоста, так как добавление тома будет перезаписать данные контейнера в этом месте.
Перечислите контейнеры и скопируйте id
бегового контейнера.
docker ps
Скопируйте содержимое каталога из контейнера, в котором будет установлен объем.
docker cp: $(pwd)
Шаг 2 — Создайте новое изображение
Этот шаг создаст изображение из работающего контейнера. Таким образом, состояние работы обслуживания сохраняется.
docker commit
Шаг 3 — Удалить контейнер
Удалите работающий контейнер, поэтому новый контейнер с добавленным объемом займет это место.
docker stop&& docker rm
Шаг 4 — Создайте новый контейнер
Теперь у нас есть изображение (снимки) контейнера, которое мы можем использовать для создания другого контейнера и добавления нового тома.
Прежде чем продолжить, одна важная вещь, которую нужно заметить, это то, что наши услуги работают вместе с Docker-Compose Анкет Они могут общаться друг с другом через сеть, созданную Docker-Compose Анкет Теперь, если мы создадим и запустим новый контейнер. Этот контейнер не сможет получить доступ к другим службам, поскольку новый контейнер не является частью сети. Таким образом, при создании нового контейнера мы должны добавить этот контейнер в существующем Docker-Compose сеть.
1. Перечислите список сетей Docker-Compose и копируйте сеть имени сети В нем будет перечислено все сети, список будет включать в себя некоторые сети по умолчанию, а также ваш сервис. Узнайте соответствующую сеть и копируйте имя сети.
docker network ls
Получите более подробную информацию о сети, запустив Docker осмотреть network_id
2. Создайте новый контейнер и запустите в существующей сети
docker run -d \ -v: \ --network= \ image-name
скопированная ректорация — Путь к каталогу, скопированный в Шаг 1 сетевая имени — Имя сети, идентифицированное в Шаг 4.1 Изображение имен — Имя изображения, созданное в шаг 2
Сделанный. Новый сервис вступит в Docker-Compose сеть с новым томом.
Оригинал: «https://dev.to/mehulcs/add-new-volumes-to-a-running-container-in-docker-compose-nhh»