docker常用命令-docker網路
阿新 • • 發佈:2020-10-11
docker命令詳解
docker search 在docker hub中搜索映象; docker pull 從docker映象源伺服器拉取指定映象或者庫映象; docker push 推送指定映象或者庫映象至docker源伺服器; docker history 展示一個映象形成歷史; docker images 列出系統當前映象; docker run 建立一個新的容器並執行一個命令; docker start 啟動容器; docker stop 停止容器; docker attach 當前shell 下attach連線指定執行映象; docker build 通過Dockerfile定製映象; docker commit 提交當前容器為新的映象; docker cp 從容器中拷貝指定檔案或者目錄到宿主機中; docker create 建立一個新的容器,同run,但不啟動容器; docker diff 檢視docker容器變化; docker events 從docker服務獲取容器實時事件; dockerexec 在已存在的容器上執行命令; docker export 匯出容器的內容流作為一個tar歸檔檔案[對應import] docker import 從tar包中的內容建立一個新的檔案系統映像[對應export] docker info 顯示系統相關資訊; docker inspect 檢視容器詳細資訊; docker kill 指定docker容器; docker load 從一個tar包中載入一個映象[對應save]; docker login 註冊或者登入一個docker源伺服器; docker logs 輸出當前容器日誌資訊; docker port 檢視對映埠對應的容器內部源埠; docker pause 暫停容器; docker ps 列出容器列表; docker restart 重啟執行的容器; docker rm 移除一個或者多個容器; docker rmi 移除一個或者多個映象; docker save 儲存一個映象為一個tar包[對應load] docker tag 給源中映象打標籤; docker top 檢視容器中執行的程序資訊; docker unpause 取消暫停容器; docker version 檢視docker版本號; docker wait 擷取容器停止時的退出狀態值;
docker網路 4種模式
基於docker run建立docker容器時,可以使用--ent選項指定容器的網路模式,docker預設有以下四種網路模式:- host模式,使用--ent=host指定;
- container模式,使用--ent=container:NAME or ID指定;
- none模式,使用--ent=none指定;
- bridge模式,使用--ent=bridge指定,預設設定;
[root@localhost ~]# cat /etc/sysconfig/docker-network # /etc/sysconfig/docker-network DOCKER_NETWORK_OPTIONS="--bip=172.16.1.1/16"docker bridge建立過程:
- 首先宿主機上建立一對虛擬網絡卡veth pair裝置,veth裝置總是成對出現的,組成一個數據的通道,資料從一個裝置進入,就會從另一個裝置出來,veth裝置常用來連線兩個網路裝置。
- docker將veth pair裝置的一端放在新建立的容器中,並命名為eth0,然後將另一端放在宿主機中,以vethxxx這樣類似的名字命名,並將這個網路裝置加入到docker0網橋中,可以通過brctl show命令檢視。
- 從docker0子網中分配一個IP給容器使用,並設定docker0的IP地址為容器的預設閘道器。
- 此時容器IP與宿主機能夠通訊,宿主機也可以訪問容器中的IP地址,在bridge模式下,連在同一個網橋上的容器之間可以相互通訊,同時容器也可以訪問外網,但是其他物理機不能訪問docker容器IP,需要通過NAT將容器IP的port對映為宿主機的IP和port。
/etc/init.d/docker stop 關閉docker0 ifconfig docker0 down 刪除docker0 brctl delbr docker0 沒有brctl需要安裝 yum install bridge-utils -y centos6.x的配置: vim /etc/sysconfig/docker-network other_args="-b=br0"
/etc/sysconfig/network-scripts/下,修改ifcfg-eth0網絡卡配置,同時增加ifcfg-br0橋接網絡卡配置,操作流程如下:
vi ifcfg-eth0內容修改為如下:
DEVICE=eth0 BOOTPROTO=none NM_CONTROLLED=no ONBOOT=yes TYPE=Ethernet BRIDGE="br0" IPADDR=192.168.43.81 NETMASK=255.255.255.0 GATEWAY=192.168.43.1 USERCTL=no vi ifcfg-br0內容如下: DEVICE="br0" BOOTPROTO=none IPV6INIT=no NM_CONTROLLED=no ONBOOT=yes TYPE="Bridge" IPADDR=192.168.43.81 NETMASK=255.255.255.0 GATEWAY=192.168.43.1 USERCTL=no
啟動docker服務
/etc/init.d/docker start
啟動一個新的docker客戶端,檢視客戶端ip如下: 進入已經啟動過的容器命令:docker attach 容器ID 即可。 此時可以外網了
centos7.x橋接網路實戰: 基於centos7.x構建docker橋接網路,案例方法如下: 配置bridge橋接網路可以直接設定網絡卡配置檔案: /etc/sysconfig/network-scripts/下,修改ifcfg-ens33網絡卡配置,同時增加ifcfg-br0橋接網絡卡配置,操作流程如下: vim ifcfg-ens33TYPE=Ethernet BOOTPROTO=static BRIDGE="br0" DEVICE=ens33 ONBOOT=yes IPADDR=192.168.1.20 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=114.114.114.114vim ifcfg-br0