Разница между запуском и запуском контейнера Docker
На практике запустить контейнер, который я делаю:
docker run a8asd8f9asdf0
Если это так, что делает:
docker start
делать?
В руководстве написано
Запустите один или несколько остановленных контейнеров.
Ответы
Ответ 1
Это очень важный вопрос, и ответ очень простой, но фундаментальный:
- Выполнить: создать новый контейнер изображения и выполнить контейнер. Вы можете создать N клонов одного изображения. Команда:
docker run IMAGE_ID
а не docker run IMAGE_ID
docker run CONTAINER_ID
![enter image description here]()
- Начало: запуск контейнера, ранее остановленного. Например, если вы остановили базу данных с помощью команды
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 [...]