1、在沒有任何docker容器啟動時的原始宿主機網路如下:
1.回環 2.物理網絡卡 3.4虛擬機器的 5.docker的網絡卡
2、啟動tomcat容器
docker run -d -p --name tomcat_test tomcat #-p是隨機埠
檢視當前已經有乙個啟動中的容器,是我們制定的tomcat_test
進入到容器裡:
docker exec -it tomcat_test ip addr #這裡可以直接加上ip addr去檢視容器的ip資訊
結果可以發現,容器已經被分配了乙個172.17.0.2是和宿主機中docker0 172.17.0.1同網段的乙個ip address。可以看出,docker0就像乙個路由器,比如我們家裡面的光貓的登入位址一般是192.168.0.1,你連線後檢視自己的裝置ip一般是192.168.0.2之類的,我們每啟動乙個容器,docker就會給這個容器分配乙個ip。只要安裝了docker就會有乙個橋接的docker0網絡卡。然後我們在回到宿主機檢視宿主機的ip有麼有變化
變化:1.docker0狀態是up了 2.多了乙個veth2....if46的網絡卡,而且與容器的ip及其的相似,容器裡面是eth0@if47。宿主機裡面又是47:。。。。@if46 這其實是一種vethpair的技術
如果我們再啟動乙個容器,檢視宿主機ip,又多了一對48 49的網絡卡
總結:容器帶來的網絡卡,都是一對一對的。veth-pair技術就是一種虛擬的網路技術,只要是veth-pair連線的兩個裝置,就是可以通訊的,目前的網路情況如下圖(veth-pair的口編號不同人可能不同)
所以tomcat01與tomcat02是可以ping通的,是需要經過docker0的。所有容器在啟動的時候,如果不指定net預設的就是橋接docker0模式。docker會給我們的容器分配乙個預設可用的ip
ip位址其實本來是(每一段是8位2進製 0-255)
00000000.00000000.00000000.00000000
轉為十進位制才變成了255.255.0.1之類的255.255.0.1/16代表他的位數是前兩位8*2=16
所以255.255.x.x就是同乙個域。如果是/24那就是3*8只有最後一位不同才能是同乙個網段,只有256個了
當容器刪除或者重啟之後,這個veth-pair就被刪除了,不可訪問了。所以怎麼才能讓服務的ip位址不變呢--link
-----------------------------自定義網路
docker的網路模式
如上圖, 網橋模式bridge就是docker0的,主機模式host和主機完全一樣,很少用,none(不建立網路)
一般情況,用橋接模式就可以了。不過可以自定義橋接
docker run -d -p --name tomcat01 --net bridge tomcat
這個啟動的命令,可以用--net指定網路。預設如上。所以我們可以先建立乙個網路配置,然後指定給我們想要啟動的容器
配置docker容器和宿主機同網段ip的方法:
宿主機ip192.168.139.128/24,下面的子網設定為同網段的,並且閘道器設定為和宿主機一樣,然後-o parent=宿主機的網絡卡名
docker network create -d macvlan --subnet 192.168.139.0/24 --gateway 192.168.139.1 -o parent=ens33 mac_net1
docker檢視網路配置,可以看到mac_net1已經出現
然後在宿主機指定ip啟動乙個容器
[root@localhost ~]# docker run -itd --net=mac_net01 --ip=192.168.139.122 --name=tomcat01 tomcat
宿主機ping這個ip
但是同網段的其他機器是可以和容器ping通的。這是我直接回到win下ping然後說明這個服務的ip配好了,可以同網段訪問,除了自己的宿主機和本容器之間不可ping通。
並且,我已經可以從外面訪問到這個ip位址了
那如果我們的容器是乙個centoos的作業系統服務,那是不是可以通過這種方式,配置同網段的ip,並且ssh連線到容器的作業系統了呢。這就需要在容器中有ssh的服務了
docker網路配置
檢視docker網路 docker network ls 檢視bridge 的ip docker inspect id 啟動乙個映象名字為aaa 設定網路host 網路預設為 bridge docker run itd name bbb centos bash host 網路ip和虛擬機器一樣 我們...
Docker 網路配置
docker 為我們提供了多種型別的網路模式,我們可以根據自己的需求使用系統預設的網路或者建立自己的網路。在我們安裝完 docker enginee 後,會自動生成3種預設的網路模式。我們可以執行命令檢視 bridge 使用docker 0 網路,containers只能在乙個host上面進行通訊。...
docker學習筆記 docker網路配置
本文主要介紹docker預設的網路行為。其中,包含建立的預設網路型別和如何建立使用者自定義網路。預設網路 當我們安裝docker後,它會自動建立3個網路,我們也可以通過docker network命令來檢視 在此就不附圖了 注意 這3個網路是被docker內建的。當我們執行乙個容器需要制定的網路的時...