mirror of
				https://github.com/yeasy/docker_practice.git
				synced 2025-11-04 11:42:01 +00:00 
			
		
		
		
	@@ -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
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								container/enter.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					##进入容器
 | 
				
			||||||
 | 
					进入容器有很多方法,其中docker自带的有个命令为`docker attach`。
 | 
				
			||||||
 | 
					当你多个窗口同时attach到一个容器的时候,你在一个窗口执行命令其他窗口都能同步显示,当某个命令阻塞之后,那么你就无法进入容器,执行命令操作了。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					很多同学都会想到ssh,ssh这里不做介绍了。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					推建大家使用下面的方法:
 | 
				
			||||||
 | 
					###nsenter
 | 
				
			||||||
 | 
					从util-linux版本2.23开始,nsenter工具就包含在其中。它用来访问另一个进程的名字空间。nsenter要正常工作需要有root权限。
 | 
				
			||||||
 | 
					很不幸,Ubuntu 14.4仍然使用的是util-linux版本2.20。安装最新版本的util-linux(2.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
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
@@ -8,3 +8,4 @@ Docker把下载的镜像存储到本地,如果一个镜像不在本地,docke
 | 
				
			|||||||
* 使用和管理本地主机上的镜像
 | 
					* 使用和管理本地主机上的镜像
 | 
				
			||||||
* 创建一个基础的镜像
 | 
					* 创建一个基础的镜像
 | 
				
			||||||
* 上传镜像到Docker Hub(公共镜像仓库)
 | 
					* 上传镜像到Docker Hub(公共镜像仓库)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user