热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux服务器docker环境运维:宿主机之间容器如何通信?如何设置网络搭桥?

1、docker环境搭建,windows、linux、mac这几个主流系统都支持docker环境,这里是指linux环境搭建docker环境;几行命令即可搞定!uname-r #查

1、docker环境搭建,windows、linux、mac这几个主流系统都支持docker环境,这里是指linux环境搭建docker环境;几行命令即可搞定!

uname -r  # 查看linux内核,是否支持docker安装

yum update # 更新 yum 包

yum install -y yum-utils device-mapper-persistent-data lvm2 #yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 设置yum源

yum list docker-ce --showduplicates | sort -r # 查看所有仓库中所有docker版本

yum install docker-ce-17.12.0.ce # 选择版本安装 docker-ce 是系统版本前x86_64的服务,17.12.0.ce是版本Linux服务器docker环境运维:宿主机之间容器如何通信?如何设置网络搭桥?

 

systemctl start docker # 启动docker

systemctl enable docker # 设置开机自启

docker version # 检查docker是否安装成功 ,有client及server两部分

systemctl status docker #查看docker启动状态

yum list installed | grep docker # 查看docker服务安装过的包

yum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -y # 删除安装包

rm -rf /var/lib/docker # 删除默认镜像目录

 

2、docker的常用命令:

docker ps -a # -a 参数 查看所有容器信息、-q 列出所有容器id、-s 查看列出容器使用大小

docker exec -it 容器ID /bin/sh # 进入容器

docker cp # 支持容器与宿主机拷贝文件

docker (stop/start/restart/rm) 容器ID_Name # 操作容器

docker images # 列出所有镜像

docker rmi 镜像ID #删除镜像 -f 强制删除

docker search 服务 # 查找镜像服务

docker pull 服务 # 拉取镜像

docker push 服务 仓库名 # 推送镜像名称

docker run # 启动容器

docker logs 容器ID_name # 查看容器日志 --tail=num 可以指定行数输出

docker login # --username=xxx --password=xxx 登录镜像仓库

docker --help # 帮助文档 可以每一个命令--help查看帮助文档,例如:docker images --help

 

3、从docker环境搭建到常用基本命令的使用(可以在--help获取),在日常docker部署服务的测试环境正常工作了,但是不排除例外,这些都好说;

例如:docker run 启动容器的参数 -v 、-e、--add-host、-p等参数的应用,

 

4、单机的docker环境比较容易玩转<目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病!>,那么出现多宿主机的时候呢?第一个问题就是不同宿主机docker容器之间的通讯问题如何解决?需要了解一定的网络知识及docker网桥的概念!

Linux服务器docker环境运维:宿主机之间容器如何通信?如何设置网络搭桥?

 

方案原理分析:由于需要使用容器的IP进行路由,就需要避免不同主机上的容器使用了相同的IP,为此我们应该为不同的主机分配不同的docker子网来保证;

描述一下不同宿主机容器之间的数据通讯是如何完成的!

A宿主机的container容器A先是发向容器A的网关docker0,然后在查找A宿主机ip的路由需要发给B宿主机,B宿主机收到数据后再转发到容器B的网关docker0;最后数据才发送到容器B内。

实现操作:

A宿主机编辑/etc/docker/daemon.json 添加"bip":"ip/netmask",例:{"bip":"172.17.1.1/24"} 因为不同宿主机docker0网桥的ip是一样的,为了解决不同宿主机容器通讯需要设置不同docker0网桥的ip地址。

然后重启docker:systemctl restart docker

同理:B宿主机编辑/etc/docker/daemon.json 添加{"bip":"172.17.2.1/24"},重启docker得到docker0网桥的ip为:172.17.2.1

接下来为每个宿主机添加路由规则

A宿主机:ip route add -net 172.17.2.0 netmask 255.255.255.0 gw 192.168.145.129 # 172.17.2.0为B宿主机docker0网桥的网段,192.168.145.129为B宿主机的ip作为路由的规则

B宿主机:ip route add -net 172.17.1.0 netmask 255.255.255.0 gw 192.168.145.128 # 172.17.1.0为A宿主机docker0网桥的网段,192.168.145.128为A宿主机的ip作为路由的规则

配置iptalbes规则:

iptables -t nat -F POSTROUTING iptables -t nat -A POSTROUTING

&&

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F 去掉防火墙的规则

重启容器,然后各宿主机之间互ping,不同宿主机的容器之间互ping都能保证正常通讯;iptables -t nat -vnL 可以查看各宿主机容器的端口转发规则

tips:如果有多台宿主机需要容器之间通讯呢?那么只能将需要通讯的服务器之间搭网桥即可

 

5、上面是实现了不同宿主机容器通讯的问题,是采用docker其中一种网络模式叫做bridge<默认模式>,那么还有三种网络模式:host模式、container模式、none模式,其中区别可能需要去查看专业的书籍深入理解各个网络模式的优劣!

 

6、问题:第四点关于解决不同宿主机之间docker容器如何通讯的解决方案,只是临时的?init 6重启linux服务器之后,路由消失,不同宿主机docker容器之间的桥梁不见了,也就无法通讯,接下来如何解决呢?

网络方案一堆,我就不一一试验了,选择了其中一种简单的方式,就是将需要添加的路由规则写入文件,每次启动系统会默认从网卡中加载:/etc/init.d/network

同时在/etc/sysconfig路径下需要创建static-routes文件,写入如下内容:

any net 172.17.1.0 netmask 255.255.255.0 gw 192.168.2.211

分析/etc/init.d/network工作原理有一段内容如下:

 # Add noninterface-specific static-routes.

            if [ -f /etc/sysconfig/static-routes ]; then

              grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do

                /sbin/route add -$args

              done

            fi

解释一下这段: grep "^any" /etc/sysconfig/static-routes # 匹配找到这段any开头的行,| while read ignore args 并忽略第一个参数读取后面的内容;然后循环添加路由规则。

 

7、这下不用担心会重启路由失效了,因为是物理机必须要考虑关机的状态。docker了解并不是很深入,借此抛出几个问题?

a>如何制作Dockerfile,首行From的意义?

b>运行docker镜像,容器里的环境与当前容器运行的系统是否有关?

c>docker网桥及通信原理?


推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 如何利用 Myflash 解析 binlog ?
    本文主要介绍了对Myflash的测试,从准备测试环境到利用Myflash解析binl ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
author-avatar
不语皓月
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有