docker集装箱不启动(docker启动)

我用下面的命令创build了容器:

docker run -d -p 52022:22 basickarl/docker-git-test 

这里是命令:

 root@basickarl:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES root@basickarl:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e4ac54468455 basickarl/docker-git-test:latest "/bin/bash" 7 minutes ago Exited (0) 26 seconds ago adoring_lumiere 22d7c5d83871 basickarl/docker-git-test:latest "/bin/bash" 2 hours ago Exited (127) About an hour ago thirsty_wright root@basickarl:~# docker attach --sig-proxy=false e4 FATA[0000] You cannot attach to a stopped container, start it first root@basickarl:~# docker start e4 e4 root@basickarl:~# docker attach --sig-proxy=false e4 FATA[0000] You cannot attach to a stopped container, start it first root@basickarl:~# 

没什么可说的,我期待容器开始并保持upp。 这里是日志:

 root@basickarl:~# docker logs e4 root@basickarl:~# 

您正在尝试运行bash ,一个需要tty才能运行的交互式shell。 使用-d在“分离”模式下运行并没有什么意义,但可以通过在命令行中添加-it来确保容器有一个有效的tty,并且stdin保持连接:

 docker run -it -d -p 52022:22 basickarl/docker-git-test 

在启动分离的容器时,更常用的方式是运行某种长寿命的非交互式进程(如sshd ,Web服务器或数据库服务器,或像systemdsupervisor这样的进程pipe理器)。

如果你想运行一个像sshd这样的服务,你不能简单地运行service ssh start 。 这将取决于您在容器中运行的分布 – 执行以下两项操作之一:

  • 它会尝试联系像systemdupstart这样的stream程pipe理员来启动服务。 由于没有服务pipe理器运行,这将失败。

  • 它实际上会启动sshd ,但会在后台启动。 这意味着(a) service sshd start命令退出,这意味着(b)Docker认为你的容器失败了,所以它清理了一切。

如果你只想在一个容器中运行ssh,请考虑一个像这样的例子。

如果你想在容器中运行sshd 和其他进程 ,你需要调查某种进程pipe理器。