Ответ
Команды docker create и docker run обе создают контейнер из образа, но отличаются моментом его запуска.
-
docker create: Только создает файловую систему контейнера и подготавливает его к запуску. Контейнер остается в статусеCreatedи не выполняет никаких процессов.# Создаем контейнер, но не запускаем его $ docker create --name my-nginx nginx # Проверяем статус (статус будет "Created") $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c1a2b3c4d5e6 nginx "/docker-entrypoint.…" 5 seconds ago Created my-nginx -
docker run: Это составная команда, которая выполняетdocker createи сразу жеdocker start. Она создает и запускает контейнер.# Создаем и сразу запускаем контейнер в фоновом режиме (-d) $ docker run -d --name my-running-nginx nginx # Проверяем статус (статус будет "Up ...") $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6e5d4c3b2a1 nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp my-running-nginx
Основное правило:
docker run = docker create + docker start
Когда что использовать:
docker create: Если нужно подготовить контейнер (например, подключить к нему сеть, настроить тома) перед тем, как его запустить вручную командойdocker start <container_id>.docker run: В большинстве случаев для немедленного запуска контейнера.