请帮助。我想进一个容器时说
守护程序的错误响应:容器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标志没有帮助。
答案 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)
脚本已完成,并且容器已停止。试试这个:
ENTRYPOINT
ENTRYPOINT
键是sudo docker run -it -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter sh
标志和命令末尾的i
。