#docker
#докер
Вопрос:
Используя изображение изhttps://hub.docker.com/_/php.
Создайте и запустите контейнер hogehoge-php с помощью docker run -dti
% docker run -dti --name hogehoge-php php
Затем я вижу, что hogehoge-php
контейнер запущен.
подтверждено:
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2c9e7ff1a952 php "docker-php-entrypoi..." 6 seconds ago Up 5 seconds ago hogehoge-php
попробуйте с помощью pull, create и start
Я читал, что docker run
это команда, которая выполняет docker pull
, docker create
и docker start
все сразу. Поэтому я решил попробовать это следующим образом (я не делал docker pull
, потому что у меня уже есть локальный php-образ).
% docker create --name foofoo-php php
c7687c088dda9b71d9380e9ca472afa436ac63785c1d2c195b8a08147f8adec9
% docker start foofoo-php
foofoo-php
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7687c088dda php "docker-php-entrypoi..." 16 seconds ago Exited (0) 3 seconds ago foofoo-php
Когда я попробовал, как указано выше, я получил Exited (0) 3 seconds ago
, и foofoo-php
контейнер, созданный docker create
, не работает все время.
foofoo-php
Контейнер, созданный docker create
, не поддерживается (опции недоступны).
% docker start -dti foofoo-php
unknown shorthand flag: 'd' in -dti
See 'docker start --help'.
i
Опция доступна, и я смог ее запустить, но она не оставляет docker запущенным.
% docker start -i foofoo-php
Interactive shell
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7687c088dda php "docker-php-entrypoi..." 3 minutes ago Exited (0) 5 seconds ago foofoo-php
Как я могу create
и start
вместо run -dti
?
Кстати, я пробовал docker run без -dti
Кстати, я пробовал docker run
без -dti
.
% docker run --name barbarbar-php php
Interactive shell
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6215c71a13a4 php "docker-php-entrypoi..." 15 seconds ago Exited (0) 15 seconds ago barbar-php
Контейнер был создан, но он не работает. Я подумал, что должен попробовать docker start
:
% docker start barbar-php
barbar-php
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6215c71a13a4 php "docker-php-entrypoi…" 33 seconds ago Exited (0) 3 seconds ago barbar-php
но контейнер не запускается.
С другой стороны, остановите и запустите контейнер, созданный docker run -dti
С другой стороны, попробуйте stop
и start
контейнер, созданный docker run -dti
, запускается после запуска.
% docker stop hogehoge-php
hogehoge-php
% docker start hogehoge-php
hogehoge-php
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6215c71a13a4 php "docker-php-entrypoi…" 4 minutes ago Exited (0) About a minute ago barbar-php
c7687c088dda php "docker-php-entrypoi…" 11 minutes ago Exited (0) 8 minutes ago foofoo-php
2c9e7ff1a952 php "docker-php-entrypoi…" 14 minutes ago Up 2 seconds hogehoge-php <----- Here
Краткое описание поведения
- запуск docker
- с опцией dit
- после запуска
- после запуска
- без опции dit
- не запускается после запуска
- не запускается после запуска
- с опцией dit
- docker создать
- не запускается после запуска
Ответ №1:
Чего вам не хватает, так это docker create -t
выделения псевдо-TTY для вашего контейнера.
Поскольку точкой входа для изображения, которое вы запускаете, является php-оболочка, запущенная на переднем плане, контейнер при запуске обнаруживает, что у него нет tty для привязки к выходу с 0.
docker pull php
docker create -t --name hogehoge-php php
docker start hogehoge-php