docker之网络访问
?
目錄
1.配置IP
2.啟動服務
3.服務維護
? ? ? 在之前的docker初體驗中,已經嘗試了使用端口映射訪問nginx,一塊網卡可以配置多個Ip地址,使用ifconfig配置ip地址,務必注意這里的ip地址不能沖突,可以使用ping ip,如果ping同網段的目標Ip不通,表示可用。
1.配置IP
[root@localhost opt]# ifconfig ens33:1 192.168.0.101/24 up [root@localhost opt]# ifconfig?
這樣就配置了兩個ip地址,那是否可以登錄呢?
ssh root@192.168.0.101?
這樣宿主機就有兩個ip地址,使用ifconfig查看之后,在ens33下有192.168.0.100和192.168.0.101兩個ip地址。
2.啟動服務
[root@localhost opt]# docker run -d -p 192.168.0.100:80:80 nginx:latest e2e1a5cbc8334d85acf1e8aa9da670dedbb96bb8fcc3ff7b338c5c63ab11eb91 [root@localhost opt]# docker run -d -p 192.168.0.101:80:80 nginx:latest 6ee5b735e75282d0f444ea54f7417bc3bfb3ff38cb0524e784f62a2f6d62a7ce啟動之后使用docker命令查看
[root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6ee5b735e752 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 192.168.0.101:80->80/tcp frosty_beaver e2e1a5cbc833 nginx:latest "/docker-entrypoint.…" 4 minutes ago Up 2 minutes 192.168.0.100:80->80/tcp jovial_raman [root@localhost opt]# netstat -lntup如果映射端口時不寫ip地址,則使用默認的ip
[root@localhost opt]# docker run -d -p 81:80 nginx:latest這樣之后,相當于訪問100的時候是一個網站,訪問101是另一個網站
3.服務維護
[root@localhost opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c2c9273e9484 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:81->80/tcp, :::81->80/tcp mystifying_feistel 6ee5b735e752 nginx:latest "/docker-entrypoint.…" 9 minutes ago Up 9 minutes 192.168.0.101:80->80/tcp frosty_beaver e2e1a5cbc833 nginx:latest "/docker-entrypoint.…" 10 minutes ago Up 9 minutes 192.168.0.100:80->80/tcp jovial_raman這樣共有三個容器,進入一個容器,修改器首頁信息
[root@localhost opt]# docker exec -it 6ee5b735e752 /bin/bash root@6ee5b735e752:/# echo '101:80'>/usr/share/nginx/html/index.html再次訪問192.168.0.101
當然也可以使用其他命令來做映射
-p hostPort:containerPott -p ip:honstPort:containerPort 多個容器都想使用80端口 -p ip::containerPort(隨機端口) -p hostPort:containerPort:udp 使用udp協議 -p 192.168.0.104::53:udp 使用宿主機的104ip地址隨機端口的udp協議映射到容器udp協議的53端口 -p 81:80 -p 443:443 指定多個port隨機映射-隨機端口 docker run -P nginx:latest前面兩個已經介紹了,現在看看對于隨機端口如何使用。先使用netstat命令查看一下當前的網絡信息
[root@localhost opt]# netstat -lntup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1749/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1194/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1193/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1411/master tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 7574/sshd: root@pts tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 27560/sshd: root@pt tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 779/rpcbind tcp 0 0 192.168.0.101:80 0.0.0.0:* LISTEN 7818/docker-proxy tcp 0 0 192.168.0.100:80 0.0.0.0:* LISTEN 7688/docker-proxy tcp 0 0 0.0.0.0:81 0.0.0.0:* LISTEN 7999/docker-proxy tcp6 0 0 :::22 :::* LISTEN 1194/sshd tcp6 0 0 ::1:631 :::* LISTEN 1193/cupsd tcp6 0 0 ::1:25 :::* LISTEN 1411/master tcp6 0 0 ::1:6010 :::* LISTEN 7574/sshd: root@pts tcp6 0 0 ::1:6011 :::* LISTEN 27560/sshd: root@pt tcp6 0 0 :::111 :::* LISTEN 779/rpcbind tcp6 0 0 :::81 :::* LISTEN 8007/docker-proxy udp 0 0 0.0.0.0:917 0.0.0.0:* 779/rpcbind udp 0 0 192.168.122.1:53 0.0.0.0:* 1749/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1749/dnsmasq udp 0 0 0.0.0.0:111 0.0.0.0:* 779/rpcbind udp 0 0 0.0.0.0:32973 0.0.0.0:* 772/avahi-daemon: r udp 0 0 0.0.0.0:5353 0.0.0.0:* 772/avahi-daemon: r udp6 0 0 :::917 :::* 779/rpcbind udp6 0 0 :::111 :::* 779/rpcbind注意觀察上面的ip地址和port信息,接著使用如下命令連續執行兩次?
[root@localhost opt]# docker run -d -p 192.168.0.101::80 nginx:latest 3a885ede52674ad84570573ac9cb7f4182c809bfa9fd39b4c6ae4ff7a6026dc6 [root@localhost opt]# docker run -d -p 192.168.0.101::80 nginx:latest 738b4313c4f779212547a19a1a7ed231133e71d6ecd08b6f59faf90d0ccd304d再次使用netstat查看,發現多了兩個端口為49153和49154的端口嗎,那為什么是這個端口呢?
這個是內核參數決定的,使用sysctl過濾下網絡信息
[root@localhost opt]# [root@localhost opt]# sysctl -a|grep ipv4|grep rang net.ipv4.ip_local_port_range = 32768 60999 sysctl: reading key "net.ipv6.conf.all.stable_secret"端口為從32768到60999這個范圍。這個有什么應用呢,比如用戶訪問web服務器的時候,比如使用了nginx反向代理的過程中,我們知道用戶可以開多個網頁。
因此入股不使用調優技術,則只能使用3個訪問請求,調優之后比如調成10000-60999,差不多5萬個多個也無法突破,因此使用多個負載均衡(比如使用4層負載均衡,如lvs),對接web服務集群。
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的docker之网络访问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker之centos7安装dock
- 下一篇: docker之数据卷管理