docker之网络访问
2021/5/5 10:30:00
本文主要是介绍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服务集群。
这篇关于docker之网络访问的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Docker-Compose容器集群化项目实战:新手入门指南
- 2024-11-19Docker镜像仓库项目实战:新手入门教程
- 2024-11-19Docker容器化部署项目实战:新手入门教程
- 2024-11-19Docker-Compose容器集群化资料入门教程
- 2024-11-19Docker镜像仓库资料详解:新手入门教程
- 2024-11-19Docker容器化部署资料:新手入门指南
- 2024-11-19Docker-Compose容器集群化教程:从入门到实践
- 2024-11-19Docker镜像仓库教程:新手入门指南
- 2024-11-19Docker容器化部署教程:初学者指南
- 2024-11-18Docker-Compose容器集群化入门教程