通过终端访问Docker容器的文件系统

24

我已成功从注册表中下载并运行dockerfile/nginx镜像。如何通过启动终端访问它的文件系统?

也许我在概念上缺少了一些东西。我需要ssh到里面吗?谢谢


2
可能是 https://dev59.com/R2Ii5IYBdhLWcg3w7wDP 的重复问题。 - thSoft
1个回答

32
你可以在一个新的镜像中启动交互式shell:
sudo docker run -i -t nginx /bin/bash

这样可以访问容器并进行更改。完成后,您需要将更改保存在新的可重用图像中:

sudo docker commit <container_id> <some_name>

这种方法适用于测试。通常,您会使用Dockerfiles来自动化这个过程。
如果您的镜像有一个默认的入口点,您可以覆盖它:
docker run -i -t --entrypoint /bin/bash nginx

谢谢,我收到了“无效选项/bin/bash”的提示,所以我猜测镜像的创建者已经禁用或删除了bash? - Zuriar
如何在不退出运行中的容器的情况下,将所做的更改保存为新的可重用镜像? - Zuriar
打开一个新的终端并使用 sudo docker commit <container_id> <some_name> - Sebastian
1
有些镜像同时具有ENTRYPOINT和CMD,尝试使用docker run -it --entrypoint /bin/bash nginx -i命令。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接