容器有自己的內部網路和 ip 位址
容器互聯:
如果你之前有 docker 使用經驗,你可能已經習慣了使用 --link 引數來使容器互聯。
隨著 docker 網路的完善,強烈建議大家將容器加入自定義的 docker 網路來連線多個容器,
而不是使用 --link 引數。
新建網路
下面先建立乙個新的 docker 網路。
$ docker network create -d bridge my-net
-d 引數指定 docker 網路型別,有 bridge overlay 。其中 overlay 網路型別用於
swarm mode,在本小節中你可以忽略它。
連線容器
執行乙個容器並連線到新建的 my-net 網路
$ docker run -it --rm --name busybox1 --network my-net busybox sh
開啟新的終端,再執行乙個容器並加入到 my-net 網路
$ docker run -it --rm --name busybox2 --network my-net busybox sh
再開啟乙個新的終端檢視容器資訊
$ 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 容器輸入以下命令
/ # 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 ,也會成功連線到。
/ # 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 容器建立了互聯關係。
通過link方式互聯
docker run --name db -e mysql_root_password=server -d mysql
sudo docker run -d --name web --link db:aliasdb nginx
path=/usr/local
/sbin:/usr
/local/bin
:/usr/sbin
:/usr/bin
:/sbin
:/bin
:/usr/local/mysql/bin
:/usr/local/mysql/scripts
hostname=c1a7c7f091eb
mysql_root_password=server
mysql_major=5.5
mysql_version=5.5.48
home=/root
path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
hostname=6337c0044215
aliasdb_port=tcp:
aliasdb_port_3306_tcp=tcp:
aliasdb_port_3306_tcp_addr=172.17.0.8
aliasdb_port_3306_tcp_port=3306
aliasdb_port_3306_tcp_proto=tcp
aliasdb_name=/web/aliasdb
aliasdb_env_mysql_root_password=server
aliasdb_env_mysql_major=5.5
aliasdb_env_mysql_version=5.5.48
nginx_version=1.9.10-1~jessie
home=/root
第二個部分則是aliasdb_env開頭的變數,這些都是從source container中匯入的,變數**於dockerfile中使用env命令定義的變數,或者是docker run的時候通過-e 新增的環境變數。
第三個部分是aliasdb_name 這個變數,這變數記錄了link的兩個容器的組合,這裡就是/web/db
第四個部分就是aliasdb_port開頭的一系列變數,這些變數會有很組,每組變數的命名格式如下
_port__
_port___port
_port___proto
_port___addr
172.17
.0.10 6337c0044215
127.0
.0.1
localhost
::1localhost
ip6-localhost
ip6-loopback
fe00
::0ip6-localnet
ff00
::0ip6-mcastprefix
ff02
::1ip6-allnodes
ff02
::2ip6-allrouters
172.17
.0.8
aliasdb
c1a7c7f091eb
db
對link的容器可以使用別名
安全的容器間連線通訊
環境變數的注入
安全的隔離環境
動態的附加或者脫離乙個網路
支援使用–link設定別名
linking containers in user-defined networks
內部網路中專用IP位址規劃
一 在國際建議標準中 文件rfc1918 在規劃內部網路的專用ip位址中認為 使用專用位址規劃乙個內部網路位址系統時,首選的方案是使用a類位址中的專用ip位址塊。理由主要有以下兩個 1 該位址塊覆蓋從10.0.0.0到10.255.255.255的位址空間,由使用者分配的子網號與主機號的總長度為24...
如何修改ip位址來更換自己的網路IP位址
我們這裡說的修改ip位址,指的是公網ip位址,而不是內網ip位址。每一台能上網的裝置,都會有乙個公網ip,也就是網路ip位址。在什麼情況下需要改自己的網路ip位址呢?現在很多任務作都是需要網路來實現的,很多網路工作人員,在工作的時候,ip被限制封鎖等情況是需要換ip的。像我們一條寬頻,只有乙個外網i...
如何檢視容器的IP位址和網路相關的引數
sudo docker ps檢視正在執行的容器的id等資訊 sudo docker inspect 容器id 可以檢視到容器的相關資訊 docker inspect format 容器id 可以檢視容器的具體ip位址,如果輸出是空的說明沒有配置ip位址 ifconfig檢視容器內的網路 cat et...