前几天我们讲了如何建立Container,每个Container会包含一项服务,如前端、後端、资料库,Container之间能不能互相沟通藉此串联起一个更大的服务应用呢? 可以的,以下讲解Docker Network的简单原理。
docker network ls
查看所有网路docker network inspect <NetworkName>
检视细部网路设定查看所有网路可以发现默认有分成host与bridge,Bridge是Linux的虚拟网路桥接技术,将Bridge打开可以发现里面包含两个Container,也就是我上一个章节建立的Web_App与Web_Vol,ip位置分别是172.17.0.2、172.17.0.3
,详细网路架构图如下:
安装docker後会新增一个docker网卡默认IP为172.17.0.1/16
(host),他会接收来自本网卡(eth0)的转发封包。新建立的Container则是会自动生成IP172.17.X.X
依序排列下去。
那Container的互相访问很简单,直接访问172.17.X.X
的IP就好了,我们来实验看看:
# 进入container
docker exec -it Web_APP bash
# 查看docker 网路
cat /etc/hosts
# 安装相关网路工具
apt-get update
apt-get install curl
# 测试去抓其他Container
curl 172.17.0.3
如下图,本docker IP为172.17.0.2
,可以成功抓到其他Container的资料。
但是Container的IP为自动生成,我们的程序在部属的时候不可能部属上去後才改IP。有一个好方法,做网路映射--link
。
docker run --link <外部Container>:<内部Network名称> <ImageName>
# 建立新的有联结的APP叫做Web_Network
docker run -it -d --name Web_Network -p 8082:80 --link Web_APP:Web_APP --link Web_Vol:Web_Vol httpd:2.4
# 进入Container
docker exec -it Web_Network bash
# 查看Network
cat /etc/hosts
可以看到Network自动多了两个网路IP,Web_APP与Web_Vol
直接透过名称抓抓看
curl Web_APP
curl Web_Vol
成功获得:
实务上也不会透过--link的方式来建立Network映射。更常使用的会是docker-compose,等之後再慢慢来讲解吧 !
昨天打了AZ,全身肌肉有疼痛就像是在抽经边缘,痛到睡不着。希望明天症状好转,继续更新。
前言 昨天朋友知道我正在撰写文章,果然是朋友啊XD 毫不留情地被呛爆,写一大堆屁话,却没有介绍嵌入...
"select"元素 "select"元素定义了一个下拉列表...
在各行各业工作时,很多人都有因为工作上失误,而被上司责骂的经验,这些必经的过程,被视为「学习」和「记...
(图片来自 Google for Education) 2021 铁人赛又开赛啦 ! 继 2019...
1. 数据类型简介 1-1 为什麽需要数据类型 在电脑中,不同的数据所需占用的空间是不同的,为了方便...