首頁 >運維 >Docker >docker中容器之間如何訪問

docker中容器之間如何訪問

尚
原創
2020-03-24 16:09:355330瀏覽

docker中容器之間如何訪問

我們都知道docker容器之間是互相隔離的,不能互相訪問,但如果有些依賴關係的服務該怎麼辦呢。以下介紹三種方法解決容器互訪問題。

方式一、虛擬ip存取

 安裝docker時,docker會預設建立一個內部的橋接網路docker0,每建立一個容器都會分配一個虛擬網路卡,容器之間可以根據ip互相訪問。

[root@33fcf82ab4dd /]# [root@CentOS ~]# ifconfig
......
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:35ff:feac:66d8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:35:ac:66:d8  txqueuelen 0  (Ethernet)
        RX packets 4018  bytes 266467 (260.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4226  bytes 33935667 (32.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
......

方式二、link

運行容器的時候加上參數link

#執行第一個容器

docker run -it --name centos-1 docker.io/centos:latest

執行第二個容器

[root@CentOS ~]# docker run -it --name centos-2 --link centos-1:centos-1 docker.io/centos:latest

--link:參數中第一個centos-1是容器名,第二個centos-1是定義的容器別名(使用別名存取容器),為了方便使用,一般別名預設容器名。

測試結果如下:

[root@e0841aa13c5b /]# ping centos-1
PING centos-1 (172.17.0.7) 56(84) bytes of data.
bytes from centos-1 (172.17.0.7): icmp_seq=1 ttl=64 time=0.210 ms
bytes from centos-1 (172.17.0.7): icmp_seq=2 ttl=64 time=0.116 ms
bytes from centos-1 (172.17.0.7): icmp_seq=3 ttl=64 time=0.112 ms
bytes from centos-1 (172.17.0.7): icmp_seq=4 ttl=64 time=0.114 ms

方式三、建立bridge網路

#1.安裝好docker後,執行下列指令建立bridge網路:docker network create testnet

查詢到新建立的bridge testnet。

docker中容器之間如何訪問

2.運行容器連接到testnet網路。

使用方法:docker run -it --name ---network --network-alias  

[root@CentOS ~]# docker run -it --name centos-1 --network testnet --network-alias centos-1 docker.io/centos:latest
[root@CentOS ~]# docker run -it --name centos-2 --network testnet --network-alias centos-2 docker.io/centos:latest

3.從一個容器ping另外一個容器,測試結果如下:

[root@fafe2622f2af /]# ping centos-1
PING centos-1 (172.20.0.2) 56(84) bytes of data.
bytes from centos-1.testnet (172.20.0.2): icmp_seq=1 ttl=64 time=0.158 ms
bytes from centos-1.testnet (172.20.0.2): icmp_seq=2 ttl=64 time=0.108 ms
bytes from centos-1.testnet (172.20.0.2): icmp_seq=3 ttl=64 time=0.112 ms
bytes from centos-1.testnet (172.20.0.2): icmp_seq=4 ttl=64 time=0.113 ms

更多相關教程,請關注PHP中文網docker教程欄目。

以上是docker中容器之間如何訪問的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn