多容器间如何通信
通过容器ip访问
容器重启后,ip会发生变化。通过容器ip访问不是一个好的方案。
通过上节课得在线docker链接再次进入
1、运行一个nginx容器:
docker run -d -p 80:80 --name myng nginx
--name myng: 取别名,后续可通过别名访问和操作容器
2、进入容器:
docker exec -it myng bash
3、查看ip:
cat /etc/hosts
会看到如下的IP和容器id
4、退出容器:
exit
5、创建一个alpine容器:(最小的linux系统)
docker run -dit alpine
-dit: 阻塞运行
6、进入alpine容器:
docker exec -it 1e sh
1e:容器id前几位(标志位,会自动查找,能唯一识别)
7、安装curl:
apk add curl
8、访问另外一个myng容器:(通过ip)
curl 172.17.0.2
9、退出容器:
exit
通过宿主机的ip:port访问
通过宿主机的ip:port访问,只能依靠监听在暴露出的端口的进程来进行有限的通信。
通过link建立连接(官方不推荐使用)
运行容器时,指定参数link,使得源容器与被链接的容器可以进行相互通信,并且接受的容器可以获得源容器的一些数据,比如:环境变量。
1、创建一个nginx容器:
docker run -d -p 80:80 --name myng nginx
2、创建一个alpine容器:(直接link)
docker run -dit --link myng:myng alpine
--link myng:myng: 源容器别名:访问名
3、进入alpine容器:
docker exec -dit dc sh
4、安装curl:
apk add curl
5、访问nginx容器:
curl myng
6、退出容器:
exit
除了环境变量之外,Docker还将源容器的主机条目添加到/etc/hosts文件中。
通过 User-defined networks(推荐)
docker network来创建一个桥接网络,在docker run的时候将容器指定到新创建的桥接网络中,这样同一桥接网络中的容器就可以通过互相访问。
未完,待补充