Ответ
Команды 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
: В большинстве случаев для немедленного запуска контейнера.