工作需要臨時啟動一個 gitlab,無奈 gitlab 需要 ssh 的 22 端口;而使用傳統網橋方式映射端口則 clone 等都需要輸入端口號,很麻煩;22 端口宿主機又有 sshd 監聽;研究了下 docker 網絡,記錄一下如何分配宿主機網段 IP
創建 macvlan 網絡
關于 Docker 網絡模式這里不再細說;由于默認的網橋方式無法滿足需要,所以需要創建一個 macvlan 網絡
docker network create -d macvlan --subnet=172.16.0.0/19 --gateway=172.16.0.1 -o parent=eth0 gitlab-net
- --subnet: 指定網段(宿主機)
- --gateway: 指定網關(宿主機)
- parent: 注定父網卡(宿主機)
創建以后可以使用 docker network ls 查看
1
2
3
4
5
6
7
|
~ docker network ls NETWORK ID NAME DRIVER SCOPE a4a2980c9165 agent_default bridge local a0f29102b413 bridge bridge local 2f46dc70b763 gitlab-net macvlan local 51bd6222530f host host local 7a14a09c3cfc none null local |
創建使用容器
接下來創建容器指定網絡即可
docker run --net=gitlab-net --ip=172.16.0.170 -dt --name test centos:7
--net 指定使用的網絡,--ip 用于指定網段內 IP;啟動后只需要在容器內啟動程序測試即可
1
2
3
|
# 啟動一個 nginx yum install nginx nginx |
啟動后在局域網內能直接通過 IP:80 訪問,而且宿主機 80 不受影響
docker-compose 測試
docker-compose 示例如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
version: '2' services: centos: image: centos:7 restart: always command : /bin/bash -c "sleep 999999" networks: app_net: ipv4_address: 10.10.1.34 networks: app_net: driver: macvlan driver_opts: parent: enp3s0 ipam: config: - subnet: 10.10.1.0 /24 gateway: 10.10.1.2 # ip_range: 10.25.87.32/28 |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。