Merge pull request #17 from luashiping/master

add enter container
pull/18/head
Baohua Yang 2014-09-25 16:55:53 +08:00
commit 37e650575f
3 changed files with 27 additions and 0 deletions

View File

@ -24,6 +24,7 @@
* [启动](container/run.md) * [启动](container/run.md)
* [守护态运行](container/daemon.md) * [守护态运行](container/daemon.md)
* [终止](container/stop.md) * [终止](container/stop.md)
* [进入容器](container/enter.md)
* [导出和导入](container/import_export.md) * [导出和导入](container/import_export.md)
* [删除](container/rm.md) * [删除](container/rm.md)
* [仓库](repository/README.md) * [仓库](repository/README.md)

25
container/enter.md 100644
View File

@ -0,0 +1,25 @@
##进入容器
进入容器有很多方法其中docker自带的有个命令为`docker attach`。
当你多个窗口同时attach到一个容器的时候你在一个窗口执行命令其他窗口都能同步显示当某个命令阻塞之后,那么你就无法进入容器,执行命令操作了。
很多同学都会想到sshssh这里不做介绍了。
推建大家使用下面的方法:
###nsenter
从util-linux版本2.23开始nsenter工具就包含在其中。它用来访问另一个进程的名字空间。nsenter要正常工作需要有root权限。
很不幸Ubuntu 14.4仍然使用的是util-linux版本2.20。安装最新版本的util-linux2.24)版,请按照以下步骤:
```
#curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-
#cd util-linux-2.24
#./configure --without-ncurses
#make nsenter
#sudo cp nsenter /usr/local/bin
```
为了连接到容器你还需要找到容器的第一个进程的PID。
```
docker inspect --format "{{ .State.Pid }}" <container-id>
```
通过这个PID你就可以连接到这个容器
```
nsenter --target $PID --mount --uts --ipc --net --pid
```

View File

@ -8,3 +8,4 @@ Docker把下载的镜像存储到本地如果一个镜像不在本地docke
* 使用和管理本地主机上的镜像 * 使用和管理本地主机上的镜像
* 创建一个基础的镜像 * 创建一个基础的镜像
* 上传镜像到Docker Hub公共镜像仓库 * 上传镜像到Docker Hub公共镜像仓库