2021-09-23
1、為什么要使用NetWork
由於在Dockerfile的文件配置需要設置網絡參數。
Docker 提供三種 user-defined 網絡驅動:bridge, overlay 和 macvlan
overlay 和 macvlan 用於創建跨主機的網絡
2 、常用命令
不指定網絡驅動時默認創建的bridge網絡
docker network create default_network
查看網絡內部信息
docker network inspect default_network
列所有列表的網絡
docker network ls
移除指定的網絡
docker network rm default_network
3. 自定義網絡
自定義網絡需要使用create命令,先來看看create命令可以跟哪些參數
剛才原生網絡不存在域名解析,但是自定義網絡存在域名解析
1.查看所有的docker網絡:docker network ls

網絡模式
- bridge:橋接docker(默認,自己創建也使用bridge模式)
- none:不配置網絡
- host:和宿主機共享網絡
- container:容器網絡連通(用的少,局限很大)
2.創建自定義網絡命令:docker network create default_network
docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.0 mynet 解析: --driver bridge 表示使用橋接模式 --subnet 192.168.1.0/16 表示子網ip 可以分配 192.168.1.2 到 192.168.255.255 --gateway 192.168.1.0 表示網關 mynet 表示網絡名
3.查看網絡內部信息:docker network inspect default_network
4.移除指定的網絡:docker network rm default_network
4. 橋接網絡 bridge network
docker network create default_network docker network create --driver bridge default_network docker network create --driver bridge --subnet 192.168.1.0/16 --gateway 192.168.1.0 default_network 解析: --driver bridge 表示使用橋接模式 --subnet 192.168.1.0/16 表示子網ip 可以分配 192.168.1.2 到 192.168.255.255 --gateway 192.168.1.0 表示網關 default_network表示網絡名
5. overlay network
docker network create -d overlay --subnet=10.0.2.1/24 overlay-net
6. macvlan network
7. Docker執行指定網絡
8. docker-compose指定networks
8.1. 使用重新創建網絡的核心配置為
version: '3' services: mysql: image: mysql:5.7.17 restart: always #container_name: my_mysql environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=root #- MYSQL_DATABASE=mydb volumes: # 數據目錄 - mysql-data:/var/lib/mysql # 配置文件 - /docker/mysql/conf/my.cnf:/etc/my.cnf # 數據庫還原目錄可將需要還原的sql文件放在這里 - /docker/mysql/init:/docker-entrypoint-initdb.d ports: - 3306:3306 networks: demo: #ipv4_address: 172.18.0.100 networks: demo: driver: default config: subnet: 172.18.0.0/16 gateway: 172.18.0.1 volumes: mysql-data:
8.2. 使用已經建好的網絡
這里要手動建一個網絡,這里面建的網絡的
"Subnet": "172.18.0.0/16"
"Gateway": "172.18.0.1"
version: '3' services: mysql: image: mysql:5.7.17 restart: always #container_name: my_mysql environment: - TZ=Asia/Shanghai - MYSQL_ROOT_PASSWORD=root #- MYSQL_DATABASE=mydb volumes: # 數據目錄 - mysql-data:/var/lib/mysql # 配置文件 - /docker/mysql/conf/my.cnf:/etc/my.cnf # 數據庫還原目錄可將需要還原的sql文件放在這里 - /docker/mysql/init:/docker-entrypoint-initdb.d ports: - 3306:3306 networks: demo: #ipv4_address: 172.18.0.100 networks: demo: external: true volumes: mysql-data:
