Network

Mon, Jul 26, 2021 閱讀時間 1 分鐘

Docker network

  • bridge: 為一個容器配置 ip, 並配置 docker0(虛擬橋接, default 為該模式)
    • network bridge 指定, default 用 docker0
  • host: 容器不會虛擬出自己的網卡, 用 Machine 的
    • –network host 指定
  • none: 容器有獨立的網卡, 但不對其進行任何配置(少用)
    • –network none 指定
  • container: 新創建的容器不會有自己的網卡, ip 而是與其他容器共用 ip, port
    • –network container:NAME 或容器 ID 指定

docker network ls  # bridge, host, none, container
docker network prune
docker network inspect {bridge, host, my_network}

docker network inspect bridge | grep name

docker inspect {containerID}
# bridge 不寫就是 bridge
### ens33 -> bridge (docker0) -> container
###         veth             -> eth0

# host
### 直接用 local 端的 ip & port, 重複則遞增

# none 
### 什麼都沒有, 須自己配置

# container 
# 坑 (下面起不起來因兩台 tomcat 都用 8080 映射出去)
# 借用 tomcat_1 網路
docker run -d -p 8080:8080 --name tomcat_1 tomcat
docker run -d -p 8081:8080 --network container:tomcat_1 --name tomcat_2 tomcat

# 這就可以了
docker run -it --name alpine_1 alpine /bin/sh
docker run -it --network container:alpine_1 --name alpine_2 alpine /bin/sh


#============
# 容器內 ip 會變
# 直接起兩台 tomcat ip addr 看 ip 後, 互 ping 是會通的, 但 ip 會變, 所以要用自定義網路名
docker network create my_network # 自己創見網路
docker run -d -p 8080:8080 --network my_network --name tomcat_1 tomcat
docker run -d -p 8081:8080 --network my_network --name tomcat_2 tomcat