docker的3個原生網絡的特色即便用場景
docker網絡,原生網絡:
Docker netwwork ls
1.None網絡html
特色:PS:用到None網絡的容器,會發現他只有一個Loopback迴環的網絡,沒有Mac地址,IP等信息,意味着他不能跟外界通訊,是被隔離起來的網絡。
使用場景:
隔離,意味着安全,因此,此網絡能夠運行關於安全方面的驗證碼,效驗碼等服務。
[root@docker ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
c88c6afa3e8e bridge bridge local
167ae1b36ebf host host local
f7b87e5b97e1 none null localnginxNone:什麼都沒有的網絡: null:表示爲空 bridge:橋接 SCOPE:在本地中是有效的
在倉庫上拉鏡像
docker pull busybox
建立none的容器爲none
docker run -itd --name none --network none busybox
進入none容器
docker exec -it none /bin/shweb
2.host網絡;基於宿主機的網絡docker
特色:PS:用到Host網絡的容器,他的網絡跟宿主機的網絡如出一轍,那是由於,在建立這個容器之初,並無對它的Net網絡棧進行隔離,而是直接使用的宿主機網絡戰。
使用場景:
網絡配置與dockerHost徹底相同,性能較好,但不便之處是靈活性不高,容器與宿主機出現端口衝突問題。(不建議使用,僅供瞭解)
docker run -itd --name host --network host busybox:latest
docker exec -it host /bin/shvim
3.bridge:橋接網絡;brctl show (查看橋接網絡)安全
docker0網卡:
特色:
在咱們安裝docker這個服務的時候,默認就會產生一張docker0的網卡,以版默認ip爲172.17.0.1/16(以後以此類推,就算刪除已有ip,也不會在使用)
容器默認使用的網絡是docker0網絡,docker0此時至關於一個路由器,基於此網絡的容器,網段都是和docker0一致的。網絡docker run -itd --name test1 busybox:latest
docker exec -it test1 /bin/sh
Ip a
Brctl showide
4.自定義網絡:oop
自帶了一個ContainerDNSserver功能(域名解析)
根據biridge
建立一個bridge網路
docker network create -d bridge my_net
-d:後面接的是什麼網絡。
brctl show
docker run -itd --name test3 --network my_net busybox:latest
docker run -itd --name test4 --network my_net busybox:latest性能進入容器
docker exec -it test3 /bin/sh
docker exec -it test4 /bin/sh
Ip a
Ping test4PS:自定義網絡優勢,它能夠經過容器名稱通訊
建立一個自定義網絡my_net2:並指定網關和網段.
docker network create -d bridge --subnet 172.20.16.0/24 --gateway 172.20.16.1 my_net2
docker run -itd --name test5 --network my_net2 --ip 172.20.16.2 busybox:latest
docker run -itd --name test6 --network my_net2 --ip 172.20.16.3 busybox:latest
docker exec -it test5 /bin/sh
Ping test6
Ps:若是想要給容器指定IP地址,那麼自定義網絡的時候,必須指定網關gate和subnet網段選項
2.自定義一個鏡像,要求基於nginx鏡像,自定義鏡像的主頁內容爲:本身的名稱|
nginx-web
docker pull nginx
cd test1/
配置Dockerfile
vim Dockerfile
FROM nginx
WORKDIR /usr/share/nginx/html/
RUN rm -rf index.html
COPY index.html /usr/share/nginx/html
RUN nginx
建立完製做鏡像
docker build -t nginx-test .
建立容器
docker run -itd --name lbs nginx-test nginx -g "daemon off;"
docker exec -it lbs /bin/sh
安裝vim命令(在網上查到的感受有點用)
apt-get install vim 會出現
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package以後在使用
apt-get update
再次使用apt-get install vim命令便可
index.html:中的名字
3.建立一個自定義網絡,而且使用上述的鏡像運行一個容器,容器使用這個自定義網絡,切換ip地址是自定義的
建立一個自定義網卡設置網段網關
docker network create -d bridge --subnet 172.20.1.0/24 --gateway 172.20.1.1 LBSnet
docker network ls
建立好後運行容器
自定義ip地址
docker run -itd --name nginx-test --network LBSnet --ip 172.20.1.10 nginx-test:latest
查看容器
docker inspect nginx-test
訪問容器IP
4.將鏡像上傳到私有倉庫
安裝私有倉庫
docker pull registry:2
運行私有倉庫服務
docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2
配置文件,並重啓docker服務
vim /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker
將nginx-test更名,並上傳到私有倉庫
docker tag nginx-test:latest 192.168.1.1:5000/test
docker push 192.168.1.1:5000/test:latest
使用更名的鏡像,建立容器,
docker run -itd --name lbs12 --network LBSnet --ip 172.20.1.100 192.168.1.1:5000/test:latest
訪問ip