Docker容器未运行

时间:2018-11-17 07:51:38

标签: docker deployment

请帮助。我想进一个容器时说

守护程序的错误响应:容器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"]

启动脚本-start.sh:

sudo docker build -t starter .
sudo docker run -t -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter

entry.sh脚本:

echo "Hello World"
ls -l
pwd
if mountpoint -q /mounted-directory 
then
  echo "mounted"
else
  echo "not mounted"
fi

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

而且很重要:

sudo docker exec -it 90599013c666 bash
Error response from daemon: Container 90599013c666d332ff6560ccde5053d9127e72042ecc3887550aef90fa1d1eac is not running

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

3 个答案:

答案 0 :(得分:2)

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

容器退出后,您将无法4,4进入容器。

如果您想在刚构建的图像上获取外壳以在其中戳戳,则可以

docker exec

要使其更易于运行,可以在Dockerfile中将ENTRYPOINT更改为CMD。 (Docker将运行作为命令行参数传递CMD的ENTRYPOINT;或者,如果没有入口点,则运行CMD。)

sudo docker run --rm -it --entrypoint /bin/sh starter

这样做,您可以更轻松地覆盖命令

...
RUN chmod +x ./app.sh
CMD ["./app.sh"]

答案 1 :(得分:1)

您可以尝试 docker start container_id,然后docker exec -ti container_id bash表示已停止的容器。

答案 2 :(得分:0)

您无法执行容器,因为您的presets: ["babel-preset-es2015", "babel-preset-es2016", "babel-preset-es2017"].map(require.resolve) 脚本已完成,并且容器已停止。试试这个:

  1. 从Dockerfile中删除ENTRYPOINT
  2. 重建图像
  3. 使用ENTRYPOINT
  4. 运行它

键是sudo docker run -it -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter sh标志和命令末尾的i