在docker容器中使用centos,我只需键入'docker attach container ID',它就会转到shell提示符,我可以在其中安装和配置nginx。
这个更容易:docker.com dockerfile/nginx您只需运行该文件,即可安装和配置所有内容。
但我无法弄清楚如何进入和访问文件。
答案 0 :(得分:12)
更新(稍后介绍的一种更简单的方法):
docker exec -t -i container_name /bin/bash
原始回答
实际上你也可以访问一个正在运行的容器。
找到容器的ID:
docker ps
导出运行容器的进程的ID:
PID=$(docker inspect --format '{{.State.Pid}}' my_container_id)
通过更改名称空间“连接”它:
nsenter --target $PID --mount --uts --ipc --net --pid
最初这里描述的是:http://jpetazzo.github.io/2014/03/23/lxc-attach-nsinit-nsenter-docker-0-9/
答案 1 :(得分:4)
首先确保了解图像和容器之间的区别。运行图像:
docker run -d -p 80:80 dockerfile/nginx
创建一个只执行nginx的新容器。此过程不像shell那样进行交互。如果您确实需要在运行时访问此容器中的文件,则唯一的选择是使用nsinit,nsenter或lxc-attach。有关详细信息,请查看https://blog.codecentric.de/en/2014/07/enter-docker-container/。
或者,您可能想尝试
docker run -it -p 80:80 dockerfile/nginx /bin/bash
创建一个执行交互式shell而不是nginx的新容器。
答案 2 :(得分:2)
在我来说,标准的bash不存在。使用/ bin / sh对我有帮助:
docker run -it -p 80:80 dockerfile/nginx /bin/sh