首页 > 解决方案 > 我不知道如何做同样的事情拉,创建和启动,而不是 docker run -dti

问题描述

使用来自https://hub.docker.com/_/php的图像。

使用 docker run -dti 创建并启动 hogehoge-php 容器

% 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

尝试拉,创建和启动

我读到这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

我怎么能createstart不是run -dti

顺便说一句,我试过没有 -dti 的 docker run

顺便说一句,我试过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…&quot;   14 minutes ago      Up 2 seconds                                        hogehoge-php <----- Here

行为总结

标签: docker

解决方案


您缺少的是docker create -t为您的容器分配一个伪 TTY。

由于您正在运行的图像的入口点是在前台运行的 php shell,因此容器在启动时会发现它没有 tty 可以附加到 0 的出口。

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

推荐阅读