docker 自帶 3 種 網路模式:分別是bridge網路,host網路,none網路,可以使用 docker network ls 命令檢視。
這種網路模式下容器只有lo回環網路,沒有其他網絡卡。none網路可以在容器建立時通過 --network=none 來指定。這種型別的網路沒有辦法聯網,封閉的網路能很好的保證容器的安全性。
通過命令--network=host指定,使用host模式的容器可以直接使用docker host的ip位址與外界通訊,容器內部的服務埠也可以使用宿主機的埠,不需要進行nat,host最大的優勢就是網路效能比較好,但是docker host上已經使用的埠就不能再用了,網路的隔離性不好。
容器的預設網路模式,docker在安裝時會建立乙個名為docker0的linux bridge,在不指定--network的情況下,建立的容器都會預設掛到docker0上面。
建立多個容器,都不指定 net 情況下 , docker network inspect bridge, 檢視 bridge 網路情況。
檢視 主機網橋情況 ,brctl show, 在 docker0 網橋下有3個介面,對應前面容器的各自的虛擬網絡卡。建立乙個容器之後乙個新的網路介面被掛載到了docker0上,這個就是容器建立時建立的虛擬網絡卡。bridge模式為容器建立獨立的網路棧,保證容器內的程序使用獨立的網路環境,使容器之間,容器和docker host之間實現網路隔離。
這裡可以看出 docker0 網橋 上對應有3個容器掛靠的虛擬網絡卡, 此 3 個容器之間可以互相通訊,因為在同乙個網橋下。
1. 先手動建立乙個 bridge 模式的新 網橋, docker network create --driver bridge --subnet=172.18.0.0/16 --gateway=172.18.0.1 new_bridge
2. docker network ls 可以檢視 docker 下現在的網路模式(新加的那個)
3. docker run -name test1 -ti --net=new_bridge 映象名 (用新網橋的乙個容器 test1)
4. docker run -name test2 -ti --net=bridge 映象名 (用 docker 預設網橋的乙個容器test2)
5. 進入到其中乙個容器 ,ip a 檢視網絡卡,ping 另乙個容器ip
6. 進另乙個容器,同上。 兩個容器ip段不一樣。 不同網橋,會建立不同網段的虛擬網絡卡給容器 。
7. 不同網橋下的容器間 不能ping通, 在於docker 設計時候就隔離了不同網橋
8. docker network connect new_bridge test2 // 為 test2 容器新增一塊 new_bridge的 虛擬網絡卡,這樣test2 上會 建立乙個新的虛擬網絡卡,網段就是 新網橋設定的。
9. 如此就能互相ping通。
建立容器時使用--network=container:name_or_id這個模式在建立新的容器的時候指定容器的網路和乙個已經存在的容器共享乙個network namespace,
但是並不為docker容器進行任何網路配置,這個docker容器沒有網絡卡、ip、路由等資訊,需要手動的去為docker容器新增網絡卡、配置ip等。(這個後面在驗證)
參考 使用者自定義模式主要可選的有三種網路驅動:bridge、overlay、macvlan。bridge驅動用於建立類似於前面提到的bridge網路;overlay和macvlan驅動用於建立跨主機的網路。
前面自定義的網路模式 new_bridge 就是新網路模式。另外兩個後面在驗證。
docker的埠對映,能保證在外部網路 訪問 同一裝置上不同容器時候 不會因為埠問題產生衝突。
docker 可將容器對外提供服務的埠對映到 host 的某個埠,外網通過該埠訪問容器。容器啟動時通過-p
引數對映埠:
可以使用-p
參數顯式將乙個或者一組埠從容器裡繫結到宿主機上,而不僅僅是提供乙個埠。注意這裡是小寫的p,不是大寫。
因為該配置依賴於宿主機器,所以dockerfile裡沒有對應的指令,這是執行時才可用的配置。-p
引數有幾種不同的格式:
ip:hostport:containerport| ip::containerport | hostport:containerport | containerport
VMware網路模式 NAT埠對映
vmware網路模式配置 這部分資料網上一大片,就說說自己的配置經歷吧 vmware共3中網路模式,各有優缺,看需求 1.bridge橋接模式。這種模式是最簡單的,直接物理機跟虛擬機器聯接,物理機跟虛擬機器在同網段,如果物理機接的網可以連入網際網路,那麼虛擬機器也可以。其他同網段內的pc可以直接遠端...
docker 追加docker容器埠對映的方法
docker run可以指定埠對映,但是容器一旦生成,就沒有乙個命令可以直接修改。通常間接的辦法是,儲存映象,再建立乙個新的容器,在建立時指定新的埠對映。但這樣太麻煩了。現在有新方案來解決掉 操作步驟 1 檢視容器 docker ps a2 停止容器 docker stop f5033 停止dock...
Docker更改容器埠對映
一般情況下是不可以改變容器的埠對映的,只有通過run命令指定。如果想要不改變容器內容和配置的情況下更改埠對映只有先停止,然後將容器打包成映象,然後在執行新的映象的時候指定新的埠對映。先停止容器 docker stop containera 將容器commit成為乙個映象 docker commit ...