无法从创build的映像中使用“docker start”命令启动简单的docker容器
我有简单的命令来创build和启动容器(create.sh):
docker build -t foo . docker rm bar docker create --name=bar foo && \ docker start bar && \ docker exec bar sh /bin/echo Test!!!
Dockerfile:
#/bin/bash FROM centos:7 RUN yum update -y
但是它不能开始:
$ bash create.sh Sending build context to Docker daemon 4.608 kB Step 1 : FROM centos:7 ---> 980e0e4c79ec Step 2 : RUN yum update -y ---> Using cache ---> 80b94205920c Successfully built 80b94205920c bar a1db507225ca7479bdcc3bb3d4e3a86339827f4bf0e9365f507978b11d99df19 bar Error response from daemon: Container bar is not running
该容器已创build,但尚未启动。
CentOS的Dockerfile将shell指定为在启动容器时运行的CMD
:
CMD ["/bin/bash"]
当他们开始的进程结束时,Docker容器退出,所以当你start
你的容器时,它会运行bash
,然后结束,因为没有更多的input到shell。
使用你的Docker镜像,这是你所期望的 – echo
命令覆盖了Dockerfile中的bash
命令:
> docker run temp echo 'Test' Test
如果你想保持一个容器在后台运行,那么你需要容器内的进程继续运行。 您可以在创build容器时指定一个命令:
>docker create temp sleep infinity a34a4528b3cfbb7a36fb429d32510c5576831adeb899c07e4596a6b9731c945b > docker start a34 a34 > docker exec a34 echo 'Test' Test
您的Dockerfile没有ENTRYPOINT或CMD,所以它立即结束,这是正常的。
检查有关进入点的文档