退出bash shell脚本后,“ docker run”死亡

时间:2018-07-29 01:36:15

标签: bash docker

我正在尝试使用系统管理员bash工具来启动Docker映像。

但是这样的docker run在其bash脚本退出后仍然对我垂死。

有问题的实际bash脚本是:

#!/bin/sh

docker run \
    --name publicnginx1 \
    -v /var/www:/usr/share/nginx/html:ro \
    -v /var/nginx/conf:/etc/nginx:ro \
    --rm \
    -p 80 \
    -p 443 \
    -d \
    nginx
docker ps

执行简单脚本会导致:

# ./docker-run-nginx.sh 
743a6eaa33f435e3e0d211c4047bc9af4d4667dc31cd249e481850f40f848c83
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                  PORTS                                           NAMES
743a6eaa33f4        nginx               "nginx -g 'daemon of…"   1 second ago        Up Less than a second   0.0.0.0:32778->80/tcp, 0.0.0.0:32777->443/tcp   publicnginx1

bash脚本完成后,我执行了'docker ps'

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

没有Docker在运行。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试在没有--rm的情况下运行它。

您可以看到所有容器(包括使用此命令已经死亡的容器):

> docker ps -a

CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS                     
743a6eaa33f4        nginx   "nginx -g 'daemon of…"   1 second ago         Exited (??) ??                         
                                                                          ^^^^^

您应该能够查看容器的退出代码是什么。使用容器ID,您还可以查看其日志以更好地了解发生了什么:

docker logs 743a6eaa33f4

如果仍然无法解决问题,可以使用tty启动容器以运行bash,然后尝试在其中运行命令。

docker run -it -v /var/www:/usr/share/nginx/html:ro -v /var/nginx/conf:/etc/nginx:ro --rm -p 80 -p 443 nginx bash