如何输入此dockerfile/nginx容器?

per*_*ian 8 bash centos nginx docker coreos

使用docker容器中的centos,我只需键入'docker attach container ID',它就会转到shell提示符,我可以在其中安装和配置nginx.

这个更容易:docker.com dockerfile/nginx您只需运行该文件,即可安装和配置所有内容.

但我无法弄清楚如何进入和访问文件.

Tad*_*nis 15

更新(稍后介绍的一种更简单的方法):

docker exec -t -i container_name /bin/bash
Run Code Online (Sandbox Code Playgroud)

原始答案

实际上你也可以访问一个正在运行的容器.

找到您的容器ID:

docker ps
Run Code Online (Sandbox Code Playgroud)

导出运行容器的进程的ID:

PID=$(docker inspect --format '{{.State.Pid}}' my_container_id)
Run Code Online (Sandbox Code Playgroud)

通过更改名称空间"连接"它:

nsenter --target $PID --mount --uts --ipc --net --pid
Run Code Online (Sandbox Code Playgroud)

最初这里有描述:http://jpetazzo.github.io/2014/03/23/lxc-attach-nsinit-nsenter-docker-0-9/


And*_*fan 6

首先确保了解图像和容器之间的区别。运行图像:

docker run -d -p 80:80 dockerfile/nginx
Run Code Online (Sandbox Code Playgroud)

创建一个仅执行 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
Run Code Online (Sandbox Code Playgroud)

它创建了一个执行交互式 shell 而不是 nginx 的新容器。


SJX*_*SJX 5

就我而言,标准的bash不存在。使用/ bin / sh帮助了我:

docker run -it -p 80:80 dockerfile/nginx /bin/sh
Run Code Online (Sandbox Code Playgroud)