應(yīng)用場景
- 為了局域網(wǎng)內(nèi)用戶方便訪問docker實例中服務(wù)
- Docker每次重啟,IP地址不會消失
1. Docker網(wǎng)絡(luò)模式概覽
junli@ubuntu16:~$ docker network list
NETWORK ID NAME DRIVER SCOPE
c53fad18e45b bridge bridge local
944636e5a53e host host local
ade481fd388f none null local
說明:
- bridge 橋接網(wǎng)絡(luò) 默認網(wǎng)絡(luò)類型,容器內(nèi)不特殊指定,就用此類型。不特殊指定的話,分配的ip為172.17.0.x
- none 無指定網(wǎng)絡(luò) 容器內(nèi)不指定局域網(wǎng)ip
- host 主機網(wǎng)絡(luò) 和主機共用一個ip,會出現(xiàn)和宿主機爭搶端口情況,非特殊需要盡量少用
最常用的就是利用bridge,自定義虛擬網(wǎng)橋來固定IP。默認情況下,docker的容器重啟之后,會自動分配IP,導(dǎo)致一次重啟IP變化。所以需要對docker容器指定IP。由于docker默認的網(wǎng)絡(luò)不能固定ip地址,我們創(chuàng)建自定義虛擬網(wǎng)橋,進行固定IP的分配
2. 創(chuàng)建自定義網(wǎng)絡(luò)
junli@ubuntu16:~$ docker network create --subnet=192.168.120.0/24 DockerNetBridge
3. 查看網(wǎng)絡(luò)信息
junli@ubuntu16:~$ docker network inspect DockerNetBridge
junli@ubuntu16:~$ docker network list
NETWORK ID NAME DRIVER SCOPE
f27f780cc924 DockerNetBridge bridge local
c53fad18e45b bridge bridge local
944636e5a53e host host local
ade481fd388f none null local
創(chuàng)建網(wǎng)橋之后,使用ifconfig查看會多出一個網(wǎng)橋,該網(wǎng)橋在docker啟動或者重啟之后,會自動顯示出來。文章來源:http://www.zghlxwxcb.cn/news/detail-519666.html
junli@ubuntu16:~$ ifconfig
br-f27f780cc924 Link encap:以太網(wǎng) 硬件地址 02:42:57:f8:de:1d
inet 地址:192.168.120.1 廣播:192.168.120.255 掩碼:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 躍點數(shù):1
接收數(shù)據(jù)包:0 錯誤:0 丟棄:0 過載:0 幀數(shù):0
發(fā)送數(shù)據(jù)包:0 錯誤:0 丟棄:0 過載:0 載波:0
碰撞:0 發(fā)送隊列長度:0
接收字節(jié):0 (0.0 B) 發(fā)送字節(jié):0 (0.0 B)
docker0 Link encap:以太網(wǎng) 硬件地址 02:42:7b:33:b2:35
inet 地址:172.17.0.1 廣播:172.17.255.255 掩碼:255.255.0.0
inet6 地址: fe80::42:7bff:fe33:b235/64 Scope:Link
......
4. 創(chuàng)建容器并指定容器IP,在自定義的網(wǎng)段選取任意IP作為啟動容器的IP
junli@ubuntu16:~$ docker run --runtime=nvidia -i -d --net GJLDockerNetBridge --ip 192.168.120.10 --name test -v /home/junli/GJLImages/test/:/GJL/data/ nvidia/cuda:8.0-devel /bin/bash
junli@ubuntu16:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a16c4565832 nvidia/cuda:8.0-devel "/bin/bash" 2 minutes ago Up 2 minutes test
參數(shù)說明文章來源地址http://www.zghlxwxcb.cn/news/detail-519666.html
docker run -i -d --net NetBridgeName --ip 192.168.120.x --name test -v 本地主機文件位置:容器文件位置 REPOSITORY:TAG /bin/bash
--runtime=nvidia 使用顯卡就添加,不用可以不添加
--net 網(wǎng)橋名字
--ip 分配各容器的IP
--name 容器名字
-v 本地工作目錄:docker工作目錄
5. 運行容器,測試本機和容器是否ping通
junli@ubuntu16:~$ docker exec -it test /bin/bash
root@6a16c4565832:/# apt-get update
root@6a16c4565832:/# apt install iputils-ping
root@6a16c4565832:/# ping 192.168.1.116
PING 192.168.1.116 (192.168.1.116) 56(84) bytes of data.
64 bytes from 192.168.1.116: icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from 192.168.1.116: icmp_seq=2 ttl=64 time=0.108 ms
64 bytes from 192.168.1.116: icmp_seq=3 ttl=64 time=0.103 ms
......
最后,對相關(guān)操作總結(jié)
docker network create --subnet=x.x.x.0/24 netBridgeName(網(wǎng)橋名稱,隨便寫即可) ----創(chuàng)建網(wǎng)橋
docker run -itd --network=netBridgeName --ip x.x.x.8 --name dockerName imageName ----指定ip
docker network list ----查看docker下網(wǎng)絡(luò)模式
docker network rm netBridgeName ----刪除創(chuàng)建的網(wǎng)橋
到了這里,關(guān)于三、Docker配置指定IP(Ubuntu 16.04)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!