Docker 容器未运行

Ant*_*kiy 4 deployment docker

请帮忙。当我想进入一个容器时说

来自守护进程的错误响应:Container 90599013c666d332ff6560ccde5053d9127e72042ecc3887550aef90fa1d1eac 未运行

我的 DockerFile:

FROM ubuntu:16.04

MAINTAINER Anton Lapitski <a.lapitski@godeltech.com>

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app


ADD ./ /usr/src/app

EXPOSE 80

ENTRYPOINT ["/bin/sh", "-c", "/usr/src/app/entry.sh"]
Run Code Online (Sandbox Code Playgroud)

启动脚本 - start.sh:

sudo docker build -t starter .
sudo docker run -t -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter
Run Code Online (Sandbox Code Playgroud)

entry.sh 脚本:

echo "Hello World"
ls -l
pwd
if mountpoint -q /mounted-directory 
then
  echo "mounted"
else
  echo "not mounted"
fi
Run Code Online (Sandbox Code Playgroud)

sudo docker ps -a 给出:

CONTAINER ID   IMAGE  COMMAND CREATED STATUS   PORTS   NAMES
90599013c666   starter "/bin/sh -c /usr/src…"   18 minutes ago      Exited (0) 18 minutes ago                       thirsty_wiles
Run Code Online (Sandbox Code Playgroud)

还有莫斯?重要的:

sudo docker exec -it 90599013c666 bash
Error response from daemon: Container 90599013c666d332ff6560ccde5053d9127e72042ecc3887550aef90fa1d1eac is not running
Run Code Online (Sandbox Code Playgroud)

请你能告诉我做错了什么吗?PS 在运行时添加 -d 标志没有帮助。

Dav*_*aze 7

一旦 ENTRYPOINT 完成(以任何形式),容器就会退出。

一旦容器退出,你就不能docker exec进入它。

如果你想在你刚刚构建的图像上得到一个 shell 来在里面戳一下,你可以

sudo docker run --rm -it --entrypoint /bin/sh starter
Run Code Online (Sandbox Code Playgroud)

为了让这个更容易运行,你可以在你的 Dockerfile 中将 ENTRYPOINT 更改为 CMD。(Docker 将运行 ENTRYPOINT 并将 CMD 作为命令行参数传递;或者如果没有入口点,则运行 CMD。)

...
RUN chmod +x ./app.sh
CMD ["./app.sh"]
Run Code Online (Sandbox Code Playgroud)

完成后,您可以更轻松地覆盖命令

sudo docker run --rm -it starter /bin/sh
Run Code Online (Sandbox Code Playgroud)


lep*_*ndu 0

您无法执行容器,因为您的ENTRYPOINT脚本已完成,并且容器已停止。尝试这个:

  1. ENTRYPOINT从 Dockerfile 中 删除
  2. 重建图像
  3. 运行它sudo docker run -it -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter sh

关键是命令末尾的i标志和。sh