Поделиться или отправить все изображения или службы, указанные в docker compose.yml, включающие данные MongoDB

#mongodb #docker #docker-compose

#mongodb #docker #docker-compose

Вопрос:

У меня есть следующий compose.yml

 version: "3"
services:
       easy-notes-app:
           container_name: nodejs-elliot
           image: elliotching/elliot-nodejs
           restart: always
           build: .
           ports:
             - "3003:3000"
           links:
             - mongo
       mongo:
             container_name: mongo
             image: mongo
             
             ports:
               - '27017:27017'
 

Я хочу

Поделитесь всем, что указано в этом yml, включая MongoDB и его данные

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

Я пробовал docker-compose push , но на другом компьютере он не извлекает mongo, и кажется, что mongo все еще нужно устанавливать вручную, и он не поставляется с данными mongo.

Комментарии:

1. Основная цель Docker — изолировать (~ контейнеризировать) среды. Все, что вам нужно нажать docker-compose up , и он настроит ваши два контейнера. Что касается миграции данных, в Docker hub есть много информации. Это очень просто по сравнению с настройкой всего вручную.

2. Извините, что я виноват, минимальное требование docker-compose.yml должно быть скопировано на другой компьютер, и docker-compose up . Я пытался docker run elliotching/elliot-nodejs

Ответ №1:

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

  1. сначала вы должны использовать тома, чтобы убедиться в сохранности данных в вашем контейнере даже после перезапуска вашего хоста. скопируйте том на хост для передачи или используйте scp для копирования из контейнера на хост.
  2. чтобы сохранить изображение в виде tar-файла
 docker save -o <path for generated tar file> <image name>
 
  1. в другой системе используйте этот код для загрузки изображений
 docker load -i <path to image tar file>
 
  1. убедитесь, что имена изображений помечены как ваш локальный репозиторий, а не как docker hub или другой репозиторий.
  2. затем
 docker-compose up -d
 

Комментарии:

1. мы будем очень признательны, если вы сможете поделиться более подробной информацией о вашем ответе, например, как создать том? нужно ли мне указывать в yml или запускать команды cli?

2. для создания тома docker volume create —name <имя> затем для подключения к тому docker запустите -d -p 8080:8083 —name <имя> -v <путь к хосту>:/<путь к контейнеру> <Имя_изображения> это пример с docker run

3. в вашем docker-compose используйте его следующим образом — volumes: — data:/usr/share/yourapp/data