mirror of
				https://github.com/yeasy/docker_practice.git
				synced 2025-10-30 18:02:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| # 容器互联
 | ||
| 
 | ||
| 如果你之前有 `Docker` 使用经验,你可能已经习惯了使用 `--link` 参数来使容器互联。
 | ||
| 
 | ||
| 随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 `--link` 参数。
 | ||
| 
 | ||
| ## 新建网络
 | ||
| 
 | ||
| 下面先创建一个新的 Docker 网络。
 | ||
| 
 | ||
| ```bash
 | ||
| $ docker network create -d bridge my-net
 | ||
| ```
 | ||
| 
 | ||
| `-d` 参数指定 Docker 网络类型,有 `bridge` `overlay`。其中 `overlay` 网络类型用于 [Swarm mode](../swarm_mode/),在本小节中你可以忽略它。
 | ||
| 
 | ||
| ## 连接容器
 | ||
| 
 | ||
| 运行一个容器并连接到新建的 `my-net` 网络
 | ||
| 
 | ||
| ```bash
 | ||
| $ docker run -it --rm --name busybox1 --network my-net busybox sh
 | ||
| ```
 | ||
| 
 | ||
| 打开新的终端,再运行一个容器并加入到 `my-net` 网络
 | ||
| 
 | ||
| ```bash
 | ||
| $ docker run -it --rm --name busybox2 --network my-net busybox sh
 | ||
| ```
 | ||
| 
 | ||
| 再打开一个新的终端查看容器信息
 | ||
| 
 | ||
| ```bash
 | ||
| $ docker container ls
 | ||
| 
 | ||
| CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
 | ||
| b47060aca56b        busybox             "sh"                11 minutes ago      Up 11 minutes                           busybox2
 | ||
| 8720575823ec        busybox             "sh"                16 minutes ago      Up 16 minutes                           busybox1
 | ||
| ```
 | ||
| 
 | ||
| 下面通过 `ping` 来证明 `busybox1` 容器和 `busybox2` 容器建立了互联关系。
 | ||
| 
 | ||
| 在 `busybox1` 容器输入以下命令
 | ||
| 
 | ||
| ```bash
 | ||
| / # ping busybox2
 | ||
| PING busybox2 (172.19.0.3): 56 data bytes
 | ||
| 64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
 | ||
| 64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms
 | ||
| ```
 | ||
| 
 | ||
| 用 ping 来测试连接 `busybox2` 容器,它会解析成 `172.19.0.3`。
 | ||
| 
 | ||
| 同理在 `busybox2` 容器执行 `ping busybox1`,也会成功连接到。
 | ||
| 
 | ||
| ```bash
 | ||
| / # ping busybox1
 | ||
| PING busybox1 (172.19.0.2): 56 data bytes
 | ||
| 64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.064 ms
 | ||
| 64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.143 ms
 | ||
| ```
 | ||
| 
 | ||
| 这样,`busybox1` 容器和 `busybox2` 容器建立了互联关系。
 | ||
| 
 | ||
| ## Docker Compose
 | ||
| 
 | ||
| 如果你有多个容器之间需要互相连接,推荐使用 [Docker Compose](../compose)。
 |