请帮忙。当我想进入一个容器时说
来自守护进程的错误响应: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 标志没有帮助。
一旦 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)
您无法执行容器,因为您的ENTRYPOINT脚本已完成,并且容器已停止。尝试这个:
ENTRYPOINT从 Dockerfile 中 删除sudo docker run -it -v mounted-directory:/usr/src/app/mounted-directory -p 80:80 starter sh关键是命令末尾的i标志和。sh
| 归档时间: |
|
| 查看次数: |
16029 次 |
| 最近记录: |