网站建设登录界面设计步骤百度网站登录入口
news/
2025/10/2 5:04:55/
文章来源:
网站建设登录界面设计步骤,百度网站登录入口,传新闻到网站上怎么做,北京大学廉政建设研究中心网站前言现在对于Docker容器的隔离性都有所了解了#xff0c;但对容器IP地址的分配、容器间的访问等还是有点小疑问#xff0c;如果容器的IP由于新启动导致变动#xff0c;那又怎么才能保证原有业务不会被影响#xff0c;这就和网络有挂钩了#xff0c;接下来就大概说说。正文… 前言现在对于Docker容器的隔离性都有所了解了但对容器IP地址的分配、容器间的访问等还是有点小疑问如果容器的IP由于新启动导致变动那又怎么才能保证原有业务不会被影响这就和网络有挂钩了接下来就大概说说。正文1. Docker网络模式简介当Docker进程启动时会在主机上创建一个名为docker0的虚拟网桥此主机上启动的Docker容器默认会连接到这个虚拟网桥上。这样所有容器通过这个虚拟网桥就打通了所以这里的docker0工作方式和物理交换机很像。在主机上可以执行命令ip link show docker0查看Docker在启动容器时可以指定网络模式如果不指定默认就是采用Bridge模式Docker的网络模式有如下几种Bridge(桥接)模式默认的网络模式比较适用于在同一Docker Daemon主机上运行的容器用户也可以自定义bridge网络优于默认的bridge网络如果需要不同Docker主机进行通信可以通过操作系统网络配置也可以使用Overlay模式。Host模式和宿主机共用一个Network Namespace。即容器不会虚拟出自己的网卡和配置自己的IP等而是使用宿主机的IP和端口Overlay模式覆盖网络可以将多个 Docker Daemon主机连接在一起并使 swarm 服务能够相互通信也可以让Docker Daemon主机上的两个独立容器进行通信。Macvlan模式Macvlan 网络允许为容器分配 MAC 地址使其在网络上显示为物理设备。Docker Deamon通过容器的 MAC 地址将流量路由到容器。None模式Docker容器拥有自己的Network Namespace但是并不为容器进行任何网络配置。即容器没有网卡、IP、路由等信息。需要单独为Docker容器添加网卡、配置IPDocker在启动容器的时候可以通过--net指定网络模式不指定默认就是bridge模式如下# --net指定网络模式这里指定为host模式
docker run -d --name testnet --net host nginx
# 通过docker inspect 容器 看网络细节如下图
docker inspect testnet2. Bridge默认模式了解一下这里就以默认的Bridge(桥接)展开来说说其他模式后续根据应用场景再具体细说。这里主要看看主机和容器之间的网络、容器和容器之间的网络。在Bridge模式下当启动容器时Docker会分配一个IP给容器并设置docker0的IP地址为容器的默认网关这个时候会在主机上创建一对虚拟网卡veth pair设备接口Docker将veth pair设备的一端配置在新启动的容器中并命名为eth0ifxxx容器的网卡另一端在主机中以veth***ifxxx这样类似的名字命名并将这个网络设备加入到docker0网桥中。容器没有启动时主机的网络配置如下当启动容器时Docker主机就会创建一对虚拟网卡vethpair设备接口如下可以进入到容器看看IP分配情况如果ip addr命令在容器内找不到那是因为基础镜像只包含核心命令如果要执行其他命令需要额外安装。可以在容器内执行如下命令进行安装。apt update apt install -y iproute2安装好之后就可以查看容器内的IP情况了如下这里有没有发现容器内的IP是和主机多出来的虚拟网卡是成对出现这样主机网络和容器之间肯定能通当然容器内部也可以ping通主机。那容器之间能不能访问呢容器内ping命令也找不到需要进行安装执行如下命令apt update install iputils-ping这里新启动一个容器mynginx2IP内部分配如下mynginx容器内能ping通mynginx2那是因为两个容器之间共用了docker0通过docker0进行转发。大概一个网络流程如下这里的Docker0就好比是交换机形成了网络桥梁。3. 如何能通过容器名进行访问默认情况容器间的访问只能通过IP不能通过容器名访问这种情况对于线上项目很不灵活比如数据库备份需要临时迁移IP可能会不一样所以项目中的地址要重新配置如果能通过容器名访问那么就不用操心更换啦只要容器名一样即可就好比域名和IP的关系一样IP再怎么变域名不变就行。3.1 通过--link方式新启动一个容器mynginx3如下# 通过--link关联 mynginx容器
docker run -d --name mynginx3 --link mynginx nginx容器启动之后可以进入到容器测试# 进入容器
docker exec -it mynginx3 /bin/bash
# 安装ping工具
apt update apt install iputils-ping内部原理其实是在mynginx3内部做了个映射配置容器mynginx3的hosts内容如下这样只能在容器mynginx3内部通过mynginx容器名ping通不能在mynginx内部通过容器名mynginx3访问如果要达到同样的效果就得在启动mynginx时通过--link和mynginx3关联起来。如果每个容器都这样的显示指定的话感觉就有点麻烦啦通常的做法都是通过自定义网络方式来达到这个目的。3.2 通过自定义网络方式首先新创建一个网络如下命令解析# --driver 指定网络模式这里为bridge桥接模式
# --subnet 指定子网IP 192.168.0.0/16
# --gateway 指定网关 192.168.0.1
# my-net 创建的网络名
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 my-net
# 显示网络
docker network ls让启动的容器使用自定义的网络即在启动容器时使用--net指定即可启动容器时不需要--link只需要接入到自定义网络就可以通过容器名ping通了如下自定义网络之所以能通过容器名ping通那是容器内运行了一个本地DNS解析器该解析器将请求转发到Docker内部DNS服务器当中DNS服务器中记录了容器启动时通过--name或--net-alias参数指定的名称与容器之间的关系。另外还有一个点现在分配给容器的IP是按照预先设置的子网范围进行分配的而不是默认的docker0子网范围执行如下命令看详细# 看容器详细信息
docker inspect testmynetnginx1总结关于Docker网络简单先说这么多后续根据实际应用场景再好好细说这里主要的目的是了解一下默认的网络模式和自定义网络方式的使用和解决的问题。Docker之前文章目录Docker小白到实战之开篇概述Docker小白到实战之常用命令演示通俗易懂Docker小白到实战之容器数据卷整理的明明白白Docker小白到实战之Dockerfile解析及实战演示果然顺手到目前为止一般的Docker使用没问题了但当容器比较多时一个一个的拉取镜像和启动容器就显得有点不方便了所以下次我们来学学Docker Compose关注“Code综艺圈”和我一起学习吧最后祝小伙伴们中秋快乐~~~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924564.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!