Подтвердить что ты не робот

Разница между запуском и запуском контейнера Docker

На практике запустить контейнер, который я делаю:

docker run a8asd8f9asdf0

Если это так, что делает:

docker start

делать?

В руководстве написано

Запустите один или несколько остановленных контейнеров.

4b9b3361

Ответ 1

Это очень важный вопрос, и ответ очень простой, но фундаментальный:

  1. Выполнить: создать новый контейнер изображения и выполнить контейнер. Вы можете создать N клонов одного изображения. Команда: docker run IMAGE_ID а не docker run IMAGE_ID docker run CONTAINER_ID

enter image description here

  1. Начало: запуск контейнера, ранее остановленного. Например, если вы остановили базу данных с помощью команды docker stop CONTAINER_ID, вы можете перезапустить тот же контейнер с помощью команды docker start CONTAINER_ID, и данные и настройки будут такими же.

enter image description here

Ответ 2

  • run запускает изображение
  • start запускает контейнер.

docker run doc упоминает:

Команда docker run сначала создает загружаемый слой контейнера над указанным изображением, а затем запускает его с помощью указанной команды.

То есть, запуск docker эквивалентен API /containers/create, а затем /containers/(id)/start.

Вы не запускаете существующий контейнер, вы используете docker exec (начиная с docker 1.3).
Вы можете перезапустить завершенный контейнер.

Ответ 3

Пояснение с примером:

Предположим, у вас есть изображение игры (iso) на вашем компьютере.

Когда вы run (монтируете свой образ как виртуальный диск), создается виртуальный диск со всем содержимым игры на виртуальном диске, и автоматически запускается установочный файл игры. [Запуск вашего образа докера - создание контейнера и его запуск.]

Но когда вы stop (подобно остановке Docker) его, виртуальный диск все еще существует, но останавливает все процессы. [Поскольку контейнер существует до тех пор, пока он не будет удален]

И когда вы start (аналогично запуску Docker), с виртуального диска запускаются файлы игр. [запуск существующего контейнера]

В этом примере - образ игры - это ваш образ Docker, а виртуальный диск - ваш контейнер.

Ответ 4

Если вы задаете этот вопрос, то базовая концепция изображений и слоев для создания этих изображений не ясна.

Сначала прочитайте ответы на эту ссылку в которой суммируются различия между слоями и изображениями

Как только вы получите эту концепцию, вы сможете лучше понять отличный, но высокий уровень ответа VonC выше.

Ответ 5

daniele3004 ответ уже довольно хорош.

Просто быстрая и грязная формула для таких людей, как я, кто смешивает run и start время от времени:

docker run [...]= docker pull [...] + docker start [...]