Я не знаю, как сделать то же самое, вытащить, создать и запустить вместо docker run -dti

#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
      • не запускается после запуска
      • не запускается после запуска
  • docker создать
    • не запускается после запуска

Ответ №1:

Чего вам не хватает, так это docker create -t выделения псевдо-TTY для вашего контейнера.

Поскольку точкой входа для изображения, которое вы запускаете, является php-оболочка, запущенная на переднем плане, контейнер при запуске обнаруживает, что у него нет tty для привязки к выходу с 0.

 docker pull php
docker create -t --name hogehoge-php php
docker start hogehoge-php