На практике для запуска контейнера я делаю:
docker run a8asd8f9asdf0
Если это так, что делает:
docker start
делать?
В инструкции сказано
Запустить один или несколько остановленных контейнеров
execute?
На практике для запуска контейнера я делаю:
docker run a8asd8f9asdf0
Если это так, что делает:
docker start
делать?
В инструкции сказано
Запустить один или несколько остановленных контейнеров
execute?
Ответы:
Это очень важный вопрос, и ответ очень простой, но фундаментальный:
docker run IMAGE_ID а не docker run CONTAINER_IDdocker stop CONTAINER_ID, вы можете перезапустить тот же контейнер с помощью команды docker start CONTAINER_ID, и данные и параметры будут такими же.docker rm container_id). С другой стороны, данные томов переживают удаление контейнера, если -vв командной строке явно не указан параметр. Расположение тома в хост-системе может быть проверено напрямую. Смотрите эту статью
& в конце runкомандной строки? Я нуждаюсь в этом в качестве местной службы (24 часа)
runзапускает изображениеstartзапускает контейнер .docker runДокумент упоминает:
Команда
docker runсначала создает записываемый контейнерный слой поверх указанного изображения, а затем запускается его, используя указанную команду.То есть, докер пробег эквивалентен API
/containers/createзатем/containers/(id)/start.
Вы не запускаете существующий контейнер, вы исполняете его с помощью docker (начиная с docker 1.3) .
Вы можете перезапустить покинутый контейнер .
-iк docker runдля интерактивного процесса? Я имею в виду, что для запуска Docker необходим образ для запуска контейнера.
Пояснение с примером:
Предположим, у вас есть изображение игры (iso) на вашем компьютере.
Когда вы run(монтируете свой образ как виртуальный диск), создается виртуальный диск со всем содержимым игры на виртуальном диске, и автоматически запускается установочный файл игры. [Запуск вашего образа докера - создание контейнера и его запуск.]
Но когда вы stop(по аналогии с остановкой Docker), виртуальный диск все еще существует, но останавливает все процессы. [Поскольку контейнер существует до тех пор, пока он не будет удален]
И когда вы делаете start (аналогично запуску Docker), с виртуального диска запускаются файлы игр. [запуск существующего контейнера]
В этом примере - образ игры - это ваш образ Docker, а виртуальный диск - ваш контейнер.
Ответ daniele3004 уже довольно хорош.
Просто быстрая и грязная формула для таких людей , как я , кто путает runи startвремя от времени:
docker run [...]= docker pull [...]+docker start [...]
"...docker run is equivalent to the API /containers/create then /containers/(id)/start.(источник: docs.docker.com/engine/reference/commandline/run )
runКоманда создает контейнер из образа и затем запускает корневой процесс для этого контейнера. Запуск его с run --rmфлагом избавит вас от необходимости удалять ненужный мертвый контейнер после этого и позволит вам игнорировать существование docker startи docker removeвообще.
run Команда делает несколько разных вещей:
docker run --name dname image_name bash -c "whoami"
docker psbash -c "whoami". Если запустить docker run --name dname image_nameбез команды на выполнение, контейнер немедленно перейдет в остановленное состояние.docker removeперед запуском контейнера под тем же именем.Как удалить контейнер, если он автоматически остановлен? Добавьте--rmфлаг вrunкоманду:
docker run --rm --name dname image_name bash -c "whoami"
Как выполнить несколько команд в одном контейнере? Предотвращая отмирание этого корневого процесса. Это можно сделать, запустив какую-то бесполезную команду при запуске с--detachedфлагом, а затем используя «execute» для запуска реальных команд:
docker run --rm -d --name dname image_name tail -f /dev/null
docker exec dname bash -c "whoami"
docker exec dname bash -c "echo 'Nnice'"
Зачем нам docker stopтогда? Чтобы остановить этот затяжной контейнер, который мы запустили в предыдущем фрагменте с помощью бесконечной командыtail -f /dev/null.