当前位置: 首页 > news >正文

网站建设评审公司网站建设费用包括哪些

网站建设评审,公司网站建设费用包括哪些,免费企业黄页,Wordpress 推广 奖励 插件一个人内耗#xff0c;说明他活在过去#xff1b;一个人焦虑#xff0c;说明他活在未来。只有当一个人平静时#xff0c;他才活在现在。 日常 1、起床 2、健身 3、LeetCode刷了2题 买卖股票的最佳时机 将最大利润拆分为每天的利润之和#xff0c;仅仅收集每天的正利润…一个人内耗说明他活在过去一个人焦虑说明他活在未来。只有当一个人平静时他才活在现在。 日常 1、起床 2、健身 3、LeetCode刷了2题 买卖股票的最佳时机 将最大利润拆分为每天的利润之和仅仅收集每天的正利润 跳跃游戏 取最大跳跃范围不用拘泥于每次究竟跳几步而是看覆盖范围覆盖范围内一定是可以跳过来的不用管是怎么跳的。使用一个变量表示当前可以到达的最大范围遍历数组每次对当前可以达到的最大范围进行更新直到到达最后 跳跃游戏2 求可以到达的最小次数使用数组进行记录遍历每个元素对于其能到达的所有元素修改最小次数用数组记录遍历所有元素对其后面位置的最小次数数组进行更新判断当前最小1是否小于后面可以达到位置的最小次数如果小于就对其进行更新 K次取反后最大化的数组和 先让绝对值大的负数变为正数如果k小于负数个数则此时操作k次后所有元素之和就是最大的数组和如果k大于负数个数则此时找最小的正数对其操作剩下的次数最后的数组之和就是结果可以先对数组排序然后从前向后遍历的同时如果是负的则取反操作并使得k-1直到k为0则直接退出求数组和或者遇到第一个正数则此时先判断是不是第一个如果不是则判断与前一个正数的大小要找到最小的正数对其执行剩下的取反操作然后退出求数组和即可也可能全为负数且k大于元素个数则此时全取反后数组末尾就是最小元素则将剩余的次数全部作用于最后一个元素即可贪心的思路局部最优让绝对值大的负数变为正数当前数值达到最大整体最优整个数组和达到最大。 4、复盘 不复盘等于白学 学习和感想 1、Docker学习 1. Docker复杂安装 对于存储类应用容器必须使用容器数据卷进行持久化 安装MySQL主从复制 新建主MySQL容器服务器master-mysql并修改配置文件配置主从复制并设置utf-8字符集修改后重启容器以重启内部运行的服务 ![[Pasted image 20241107151904.png]]![[Pasted image 20241107152133.png]]在master-mysql主机上创建数据同步用户以完成授权由从机登录该用户以实现主从复制从而实现授权![[Pasted image 20241107152358.png]]启动从mysql容器slave-mysql同样修改配置文件实现从机配置并重启容器以重启内部的mysql服务![[Pasted image 20241107152527.png]]![[Pasted image 20241107152628.png]]先在主机master-mysql中查看主从复制的状态然后进入从slave-mysql中配置主从复制 ![[Pasted image 20241107152933.png]]配置完成后在从机中查看主从同步状态然后在从机中开启主从复制配置后要自己开启主从复制start slave; ![[Pasted image 20241107153203.png]]总体步骤![[Pasted image 20241107151714.png]] 安装Redis集群 面试题分布式存储算法 大量数据需要缓存肯定不能使用单机存储必须使用分布式存储分布式存储算法 概念 分布式存储算法是将数据分布式的存储在不同的服务器上此时就出现了数据的分配问题即数据应该存储到哪台服务器上哈希取余分区是根据部署的服务器个数来对数据进行分配直接根据数据的KEY求出哈希值然后对服务器的个数取余得到结果就是存放的位置此时不便于扩缩容每次扩缩容都要全部重新分配一致性哈希算法采用哈希环即让key的哈希值对固定的值进行取余使其落在长度为固定值的一个环上的某个位置固定值与服务器的个数无关不会收到扩缩容影响然后对每台服务器也进行取余平均落到哈希环的某个位置当key的哈希值取余后顺时针遇到的第一个服务器就是存放的位置此时扩缩容只会影响与服务器邻近的部分数据而不会对整个哈希环上的数据造成影响但可能会造成数据倾斜问题到时数据分布不均匀哈希槽算法(在一致性哈希算法中加一层slot槽)是将数据分配在16384个slot槽中先根据哈希函数计算出key的哈希值然后对16384取余得到要存放的槽位然后每台服务器均均匀管理着部分槽位当扩缩容时直接进行槽位的转移即可而无需对数据进行重新分配为什么用16384因为建议集群最多用1000个节点故每个节点平均管理16个槽位就可以且16384个槽位只需要2k数据进行存放而心跳包要携带完整信息故要修改2k的槽数据如果使用2 ^ 16位来存放则需要8K此时会造成大量开销 哈希取余分区 直接对Redis节点数进行取余以得到要保存到哪个节点中取余算法很快且实现了负载均衡和分而治之 ![[Pasted image 20241107160002.png]]但每次扩缩容都要对所有的数据进行重新分配因为当扩缩容后取余值发生了改变故之前分配的结果不一定是现在的结果故必须全部重新分配![[Pasted image 20241107160211.png]]扩缩容时必须全部重新分配因为前面存储的数据的key取余后结果发生了改变 一致性哈希 为了解决哈希取余算法数据变动和映射问题而提出的其直接固定值取余从而实现一个固定的哈希环此时节点扩缩容不会影响数据取余后的结果然后对节点也进行取余均匀存放到哈希环的位置上此时数据取余后顺时针遇到的第一个节点就是存放的节点![[Pasted image 20241107164256.png]]此时扩缩容不会影响所有数据的映射只会对相应节点附近的数据所有落到当前节点的数据即当前节点逆时针到上一个节点之间的数据造成变动只影响顺时针的下一个节点有较高的容错性和扩展性某一个节点出错只会影响落到该节点上的数据不会造成数据的全部重新分配且节点增加时只影响落到该节点的数据即新增节点与逆时针上一个节点之间的数据会被映射到该节点上只影响顺时针的下一个节点但节点很少时可能存在数据倾斜问题导致每个节点数据分配不均匀节点映射是根据IP随机映射的不一定会均匀故节点很少时可能会出现数据倾斜问题 ![[Pasted image 20241107164215.png]]三大步骤1、算法构建哈希环2、服务器节点IP映射将服务器节点映射到哈希环的某个位置可以使用IP3、key落到服务器的落键规则key映射到哈希环上后顺时针遇到的第一个节点就是存放的位置![[Pasted image 20241107163254.png]]![[Pasted image 20241107163419.png]] 哈希槽slot 一致性哈希算法会出现数据倾斜问题为了解决均匀分配问题在数据和节点直接加了一层哈希槽slot数据先均匀存放在哈希槽slot中然后再由节点管理哈希槽在数据和节点之间加入一层哈希槽slot一共有16384个哈希槽slot数据计算哈希值后对16384取余得到槽位放入指定的槽中然后节点均匀分配槽的个数来管理数据建议最多1000个节点之所以16384个槽因为在发送心跳包时要携带节点的所有信息其中就有槽的信息而设置163842 ^ 14 个槽时此时只需要2KB就可以携带所有的槽信息而如果用 2 ^ 16 个槽则此时要携带 8KB 的数据存放槽信息就会造成极大的延迟并浪费带宽且压缩效率低且建议Redis节点最多1000个故不需要使用太多的槽个数只要16384个就行只有16384个哈希槽每个数据key先计算哈希值然后再对16384取余来确定所在的哈希槽 ![[Pasted image 20241107154041.png]] 三主三从Redis集群配置 先关闭防火墙并且启动Docker服务 systemctl start docker以集群的方式启动6台Redis容器(运行Redis服务的简易版Linux环境) –net host模式不需要端口映射直接使用宿主机的端口 ![[Pasted image 20241107204749.png]]![[Pasted image 20241107205104.png]]进入其中一台Redis容器的Linux环境中来配置主从关系 使用redis-cli –cluster create xxx1 xxx2 xxx3 –cluster-replicas 1 来为每个master创建一个slave节点会自动分配master和slave节点通过–cluster-replicas 来设置为每个master自动分配指定的slave节点个数创建集群成功后会自动为每个master节点均匀分配哈希槽 ![[Pasted image 20241107205248.png]]进入任一个集群节点查看集群状态 cluster info 、 cluster nodes在登录redis-cli 要使用 -p 指定redis的端口号 ![[Pasted image 20241107210203.png]]每一次主从节点的分配都是随机的随机为每个master分配指定个数的slave且主从分配结束后会自动均匀分配哈希槽slot![[Pasted image 20241107204559.png]] 主从容错切换迁移 当集群中某个master节点宕机时会自动将其slave节点切换为master节点以保证容错且原来的master会变为slave当重新启动时不会还原为master而是会变为新的master的slave当集群中某个master宕机后会将其slave变为新的master而原来的master就会变为新master的slave且集群就是主从复制哨兵内部自带哨兵功能数据读写存储开启集群后数据通过哈希槽分配到不同的master节点中此时一定要通过 -c 开启路由转发否则无法操作别的master节点的数据key![[Pasted image 20241107212142.png]]一定要使用 -c 启动redis-cli开启路由转发否则无法访问别的master所管理的哈希槽中的数据在集群环境下登录redis时一定要使用 -p 指定端口号如果不指定则默认是6379端口且集群下对数据处理时一定要加上 -c 启动路由转发此时会直接跳转到对应的master然后处理该master所管理哈希槽下的数据集群环境下必须使用 -c 启动redis客户端此时会自动进行路由跳转跳转到指定哈希槽所在的master节点中再对数据进行操作-c 会开启集群的路由转发会自动跳转到对应的masterredis -cli --cluster check ip:port 检查指定节点所在的集群的信息只有master可写从机slave只可读1 主从扩容 将新节点作为master加入集群redis-cli –cluster add-node 新节点IPPORT 集群节点IPPORT 向集群加入新master节点时必须设置指路节点以指明加入哪个集群且新加入的节点会作为master节点而且不会自动分配槽位要自己手动分配 ![[Pasted image 20241108075433.png]]为新加入集群的master节点手动分配槽位redis-cli --cluster reshard 新加入节点IPPORT为新加入的master节点手动分配哈希槽位slot在原有分配的基础上释放原来master节点的槽位分配给新节点并指定分配多少个槽位此时会从别的master的槽位中分别匀一点组成新master节点的槽位不是从0开始分配而是分别匀出一点为集群的master节点添加新的slave节点先向集群中添加新的节点–cluster add-node 新节点 集群节点 然后指定是哪个节点的slave --cluster-slave --cluster-masdter-id master节点ID ![[Pasted image 20241108081041.png]]就是添加新的master节点此时要自己手动为节点分配哈希槽位先将节点加入到集群中需要一个指路的master节点来指明加入哪个集群加入成功后要自己手动分配哈希槽且重新分配哈希槽不会影响槽中的数据当集群创建时会自动为每个master节点分配均匀的哈希槽位但是当扩容或者缩容时必须手动的分配和释放槽位先将新的节点作为master加入集群此时不会为其分配槽位要自己手动为其分配槽位![[Pasted image 20241108075225.png]] 主从缩容 集群主从缩容时必须先删除从机节点然后释放主机master上分配的槽位再删除主机master节点主从缩容时先删除从机节点redis-cli –cluster del-node 从机IPPORT 从机ID ![[Pasted image 20241108082228.png]]将主机master的槽位释放仍是使用 --cluster reshard 集群节点 来对指定节点所在集群的槽位进行释放![[Pasted image 20241108082546.png]]删除主从节点时必须先删除从机节点然后再删除主机节点因为主机作为写入如果先删除会造成容错迁移导致额外的开销故先删除从机节点 集群操作 当主从扩缩容时只是将槽位的分配进行了变动但其内的数据仍然属于该槽位不需要对数据重新分配使用 –cluster reshard 集群节点 可以实现对指定节点所在集群的槽位进行操作且cluster操作要输入集群的某个节点以指定所在的集群然后再对集群中的节点进行操作要先指定节点的集群集群主从扩容时先通过 --cluster add-node 将节点添加到指定的集群中此时作为master节点然后使用reshard让新增节点作为接收节点从all集群master节点中抽取槽位对其进行分配然后新增从节点并配置作为新master节点的slave --cluster-slave --cluster-master-id xxx集群主从缩容时先通过 --cluster del-node 删除从节点然后使用reshard对master节点的槽位进行释放指定一个节点接收从要删除的master节点抽取槽位分配给要接收的节点或者多次释放给多个节点然后删除master节点 2. DockerFile解析 是什么构建镜像的文件 创建镜像的两种方式 通过对本地的容器使用 docker commit 操作 提交为一个镜像其在原来镜像的基础上添加一个容器层文件然后保存到本地通过DockerFile来创建镜像文件 **DockerFile是创建Docker镜像的文本文件是由一条条构建镜像所需的指令和参数构成的脚本DockerFile是构建Docker镜像的文本文件由一条条指令和参数构成先编写dockerFile文件然后docker build 命令根据dockerFile构建镜像然后docker run该镜像生成容器实例使用commit构建镜像时每次都要在已有镜像基础上进行容器层修改然后commit为新的镜像故引入了DockerFile直接根据指令和参数生成镜像根据DockerFile构建Docker镜像然后根据Docker镜像创建Docker实例Docker镜像是包含服务环境和配置的模板Docker容器是运行镜像内服务的一个简易版的Linux系统![[Pasted image 20241108092112.png]]![[Pasted image 20241108094442.png]] DockerFile构建过程 DockerFile就是用来构建镜像的脚本由一条条指令和参数构成Dockerfile内容基础知识 每条保留字指令建议大写字母且后面至少一个参数从上到下顺序执行 表示注释 每条指令都会创建一个镜像层并对镜像层进行提交Docker镜像是分层的由多个只读的镜像层组成![[Pasted image 20241108091319.png]] DockerFiel执行流程 把之前多次commit的操作打包为一个Dockerfile文件由Docker自动执行当docker build根据Dockerfile构建镜像时先创建一个基础镜像然后顺序执行每条指令对每一条指令创建一个容器层执行指令的操作然后commit提交为镜像层然后基于提交的镜像再创建一个容器层继续处理下一条指令直到全部指令执行完成![[Pasted image 20241108091722.png]] DockerFile常用保留字 DockerFile文件中保留字后面至少一个参数且保留字建议大写不一定要大写但创建的Dockerfile文件的D必须大写 FROM 基础镜像指定当前镜像基于哪个镜像必须是一个已经存在的镜像作为模板且在第一条构建时执行MAINTAINER 镜像维护者姓名和邮箱RUN 容器构建(docker build)时执行的命令![[Pasted image 20241108094946.png]]EXPOSE 当前容器对外暴露的端口容器运行时执行WORKDIR 指定在创建容器后终端默认登录进来的工作目录USER 指定镜像以什么用户身份去执行默认是rootENV 在构建镜像中设置环境变量可以在RUN指令和其他指令中使用 ![[Pasted image 20241108095408.png]]ADD 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar包相当于拷贝解压宿主机的相对路径COPY 将宿主机命令下的文件拷贝进镜像仅仅拷贝 ![[Pasted image 20241108095855.png]]VOLUME 指定容器数据卷用于数据持久化工作运行容器时执行CMD 指定容器启动后要干的事情会被run之后的参数覆盖![[Pasted image 20241108100030.png]]ENTRYPOINT 也是指定容器启动后要干的事情但不会被参数覆盖且CMD相当于在ENTRYPOINT后添加参数![[Pasted image 20241108100417.png]]RUN是在docker build时运行的指令CMD是在docker run时运行的指令![[Pasted image 20241108094524.png]]![[Pasted image 20241108100824.png]] DockerFile常用保留字案例 自定义镜像 使用DockerFile自定义镜像先创建一个Dockerfile文件(D必须大写)在Dockerfile文件中使用保留字编写镜像然后使用docker build -t IMAGE:TAG . 来根据当前文件夹下的Dockerfile文件构建指定的镜像文件此时会顺序执行Dockerfile文件下的每一行命令并生成镜像层最后生成镜像保存到本地仓库中然后使用docker run 就可以启动镜像创建一个运行该镜像的Linux环境还可以在后面添加一些命令编写DockerFile 文件名必须叫 Dockerfile![[Pasted image 20241108101606.png]]ADD保留字是拷贝解压使用宿主机的相对路径RUN保留字是在构建Docker镜像时执行的命令相当于在终端的命令行中执行的命令有两种格式推荐使用 shell 命令行格式此时一个RUN代表运行一个命令行命令CMD保留字中的参数是在Docker容器运行后执行的命令且只会执行一个CMD当多个时会被覆盖只执行最后的CMD且run之后的命令参数也会覆盖CMD 构建Docker镜像 docker build -t 新镜像名字:TAG .(Dockerfile文件目录)要指定Dockerfile文件所在的目录. 表示当前目录其会自动在目录下找到Dockerfile文件并进行构建要指定构建出镜像的名字和TAG否则将会生成虚悬镜像此时无意义要通过 docker image prune删除所有的虚悬镜像根据Dockerfile文件构建Docker镜像时会顺序执行每一条指令每一条指令的运行都是一个镜像层不断叠加为最终镜像 运行Docker容器 构建后的Docker镜像会保存在本地仓库中直接docker run 运行镜像生成容器即可运行后会执行CMD保留字中的命令且会被run后面的命令覆盖 虚悬镜像 dangling image 镜像名和TAG版本标签全为none的镜像为虚悬镜像已经失去了意义必须删除通过 docker image prune 来删除本地仓库中 的所有虚悬镜像镜像仓库REPOSITORY和TAG版本标签全为 none 的IMAGE在根据Dockerfile文件构建镜像时不指定镜像的名和TAG标签此时生成的镜像就是虚悬镜像即镜像名和TAG标签均为none的镜像为虚悬镜像根据Dockerfile文件构建镜像时docker build -t 镜像名字:TAG . 必须指定构建镜像的名字和版本标签TAG否则将会生成虚悬镜像镜像名字和TAG全为none此时是无意义的且会占用空间故必须删除通过 docker image prune 来删除所有的虚悬镜像 3. Docker微服务实战 是什么 在Docker容器中运行SpringBoot创建的微服务前提要先将微服务构建为一个镜像通过Dockerfile文件进行构建 怎么做 先使用SpringBoot编写一个微服务然后打成 jar 包并上传到docker所在的宿主机中然后编写Dockerfile文件在Dockerfile文件中实现运行jar包的操作然后构建Dockerfile文件生成镜像文件jar包和Dockerfile文件在同一个目录下因为在Dockerfile文件中要使用 ADD 将相对路径下的文件拷贝到指定的容器目录下并解压将相对路径下的jar包拷贝到容器中并解压在Dockerfile文件中通过 RUN 来在构建时如果命令行运行传入的jar包Dockerfile文件的内容在Dockerfile 文件中实现运行jar包的操作![[Pasted image 20241108125843.png]]1、创建一个微服务并打包为jar包2、将微服务jar包上传到Docker所在的宿主机上3、构建Dockerfile文件将jar包上传到容器上并运行4、根据Dockerfile文件构建镜像5、根据镜像生成容器来运行镜像文件![[Pasted image 20241108130125.png]] 4. Docker-network网络 是什么 每台机器都会有两个IP地址其中一个是自身网卡的IP地址应该是local本地IP地址如果有选择相关虚拟化的服务安装系统后启动网卡会发现一个以网桥连接的私网地址virbr0网卡有固定的IP地址是做虚拟网桥使用的为连接其上的虚拟网卡提供NAT访问外网功能![[Pasted image 20241108131659.png]]也就是说主机自带一个自身的网卡IP和一个本地IP然后当启动虚拟化技术时也会为其虚拟一个网桥并配置IP此时就可以通过这个IP访问虚拟机 Docker网络命令 docker network ls查看docker的网络模式默认创建3大网络模式下(bridge、host、null)的三个networkbridge、host、nonedocker network COMMAND均是docker network开头![[Pasted image 20241108132340.png]] 能干嘛 容器间的互联和通信以及端口映射容器IP变动时可以通过服务名直接网络通信而不受IP变动影响使用自定义网络自定义网络自动维护了IP和服务名的映射此时就可以通过服务名实现容器之间的通信Docker是虚拟化容器技术创建Docker后会为其虚拟一个网桥实现访问 网络模式(bridge|host|none|container) 在创建容器时通过 --net 来指定容器的网络模式不指定默认为bridge模式为每个新建的容器分配并设置独立的IP并创建 eth0和veth接口与docker0网桥相连默认虚拟网桥bridge模式为每个容器分配并设置IP并将容器通过eth0和veth连接到docker0上host模式容器不会虚拟出自己的网卡也不会配置IP而是使用宿主机的IP和端口使用主机的IP和端口且内部的容器会使用自动指定的PORT如果占用则自动递增none模式容器有独立的网络空间但并没有任何网络设置如分配IP等要自己配置基本不用只有一个 local需要自己配置container模式新创建的容器不会直接创建IP而是和指定的容器共享IP和端口与指定的容器共享IP和PORT当容器关闭时也会取消共享总体介绍![[Pasted image 20241108133935.png]]![[Pasted image 20241108134018.png]] Docker网络底层IP与容器映射是动态的 当启动一个容器时不指定–network就是默认网桥bridge模式会为每一个容器均分配一个IP地址而且是动态分配的如果某个IP的容器关闭则此时该IP会分配给下一个容器故容器访问容器写死IP则会导致IP映射错误即Docker容器底层分配的IP不是固定的而是可能会变化的每次启动容器均会随机动态分配一个未被占用的IP当删除容器时就会回收该IP继续分配故不可以使用固定的IP进行访问不同的network就是不同的网段通过 docker network create 来创建自定义网络模式自动维护了容器分配的IP和容器名的映射此时通过容器名就可以访问容器而不需要使用动态的IP地址 Docker网络模式 bridge模式 启动docker后会创建一个docker0网桥此时不指定–net默认使用bridge模式创建容器每次都会给容器分配一个IP以及一个eth0且在bridge中有一个veth与其对应相连从而实现容器与容器以及宿主机之间的通信且IP的分配是动态的分配一个未被占用的IP当重新启动时就不一定是之前的IP了docker0网桥就是将主机和所有Docker容器的网络桥接为同一个网段使得主机和容器之间可以相互通信![[Pasted image 20241108135704.png]]因为创建容器时也会为其分配网桥为docker0故所有的docker容器和宿主机之间均在同一个网络通过docker0网桥相连![[Pasted image 20241108140128.png]]在创建容器时默认bridge模式下会对每个容器分配一个网卡IP地址并通过docker0网桥与宿主机和其他容器相连每创建一个容器就会在网桥中创建一个veth接口并在容器中创建一个eth0接口与veth接口相连从而实现各个容器通过网桥和宿主机的通信打开docker服务时会创建一个docker0网桥与宿主机相连然后每创建一个容器就会在网桥中创建一个veth接口并在容器中创建一个eth0接口与其相连从而使得docker内各个容器与宿主机之间通信每个容器内的eth0均会与宿主机中的某个veth相连bridge模式下如果不使用端口映射则必须访问网桥中veth接口对应的IP地址才可以访问容器而如果使用了端口映射则直接访问宿主机的对应端口就可以映射到容器的对应端口当容器启动时其内的服务会自动根据端口号运行 host模式 host模式下不会为容器配置IP而是使用宿主机的IP此时使用端口映射是失效的而且容器内的网络配置和宿主机的完全相同且端口映射以默认的为主如果被占用则递增host模式下使用宿主机的网络配置此时的端口映射是失效的容器中的服务使用默认的端口号进行运行直接使用宿主机的IP地址作为容器的IP地址不需要额外地址转换即不为容器分配单独的IP地址使用宿主机的地址host模式下容器不会虚拟出自己的网卡IP而是使用宿主机的IP和端口当使用host模式时使用 -p 端口映射会出现warning警告且不会生效因为容器与宿主机共用IP故不需要端口映射只需要指定容器的PORT即可![[Pasted image 20241108151916.png]] none模式 禁用网络功能只有 local 标识不为Docker容器做任何网络配置只有一个local需要自己配置网卡和IP![[Pasted image 20241108153110.png]] container模式 和另一个容器共享网络配置使用同一个eth0的接口配置与docker0网桥的使用同一个IP地址进行访问在创建容器时使用 --network container 使用container模式此时不会为该容器配置IP而是和指定容器共享网络配置![[Pasted image 20241108154241.png]]container模式下两个容器共享同一个网络配置要注意端口映射的冲突不可以映射到同一个端口中因为共享同一个网络配置而且如果此时被共享的容器如果关闭则共享的容器的网络配置也会消失就变为了none模式当被共享的容器关闭时此时网络配置也会消失 自定义网络模式自动维护容器名和IP的映射 通过 docker network create xxx 来创建一个自定义网络默认bridge网络模式的缺点 当两个容器在同一个网段时此时就可以通过IP地址进行访问其会通过网桥bridge访问到指定的容器但在bridge默认模式下每次给容器分配的IP地址是动态的会将当前未被占用的IP地址分配给容器如果容器重新启动则会导致IP地址发生改变故不可以固定IP地址去访问容器应该通过容器名去访问同一个网桥网段下的容器但在bridge模式下如果使用容器名去访问容器则无法连通在默认的bridge模式下创建容器时此时IP地址是随机动态分配的而且会发生变化可以通过IP地址实现容器通信但当容器重启后IP地址就会发生变化故无法固定IP故引入了自定义网络实现通过容器名进行容器之间的通信自动维护容器名和IP的映射 自定义网络实现通过容器名通信 自定义网络本身就维护了容器名和IP的对应关系ip和域名都能通使用 docker network create 创建的网络默认是bridge桥接驱动模式此时将容器加入到自定义网络中就可以实现通过容器名来进行通信 小总结 当启动docker服务时就会创建一个 docker0 的网桥且一端与宿主机相连当创建容器时不使用–network指定模式时会默认使用bridge网桥模式此时会为容器单独配置网络IP在容器内创建一个eth0接口并在docker0网桥中创建一个veth接口与其相连从而实现当前容器与网桥和宿主机在同一个网段此时每加入一个容器都会生成一对接口实现相连如果想访问容器可以通过为容器分配的IP进行访问或者使用-p实现与宿主机的端口映射此时访问宿主机的端口就会映射到容器的端口此时容器底层IP是动态分配的每次启动都会随机分配一个未被占用的IP当使用host模式时此时不为容器配置网络而是与宿主机使用相同的网络配置当使用none模式时此时不会为容器配置网络需要自己配置容器内只有一个local当使用container模式时此时也不会为容器配置网络而是与指定的容器共享同一个eth0网络配置且指定容器如果关闭则当前容器的网络配置也会消失
http://www.hkea.cn/news/14434008/

相关文章:

  • 温州做外贸网站app开发制作
  • 做区域县城招聘网站wordpress后台安全
  • 天然气公司的网站应该怎么做如何创造一个公众号
  • 成都网站制作售后建设地方性综合门户网站大致多少钱?要多大的流量?
  • 装饰公司为什么做网站加工平台接单
  • app界面设计说明重庆网站搜索引擎seo
  • 网站如何安装dedecms山亭网站建设
  • 做视频网站要什么主机杭州建设网造价平台
  • 成都网站开发企业工程信息价在哪查询
  • 第一个做装修的网站100块钱开发网站
  • wordpress 企业站wordpress 简单企业主题
  • 上海做网站哪家公司晋中北京网站建设
  • 东营专业网站建设公司电话多合一网站源码
  • 网站架构原理表格做的网站影响收录
  • 网络营销网站平台有哪些中国建设银行北海招聘信息网站
  • 阿里指数网站大连网站推广工具
  • 学校管理网站源码怎么创建卡密网站
  • php网站多语言翻译怎么做sae wordpress伪静态
  • 昆明专业网站建设的公司如何自定义wordpress的登录页面
  • 宽屏网站沈阳网站建设优化
  • ftp怎么上传文件到网站黄渡网站建设
  • 淘宝买网站开发不行吗搜索引擎推广的三种方式
  • 苏州营销型网站制作wordpress附件中文乱码
  • 池州网站建设费用敬请期待同义词
  • 淘宝 网站建设教程视频php网站开发是什么意思
  • 营销软文网站wordpress incategory
  • 旅游网站的后台管理系统怎么做大棚网站建设
  • php 获取网站根域名网站推广活动
  • 关于申请开通网站建设的请示品牌推广建议
  • 微企帮做网站微信app制作公司