容器网络(桥接、host、none)及跨主机网络(etcd、flannel、docker)

2024-08-29 01:44

本文主要是介绍容器网络(桥接、host、none)及跨主机网络(etcd、flannel、docker),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.本地网络

1.bridge

        所有容器连接到桥就可以使用外网,使用nat让容器可以访问外网,使用ip a s指令查看桥,所有容器连接到此桥,ip地址都是 172.17.0.0/16网段,桥是启动docker服务后出现,在centos使用bridge-utils安装。

下载bridge-utils

[root@docker0 ~]# yum -y install bridge-utils

 启动docker并运行了一个容器,发现有两个接口被使用

[root@docker0 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
docker0		8000.0242bbcb6f92	no		veth3b2a111veth432a975

 使用docker network查看桥

[root@docker1 ~]# docker network --help
Usage: docker network COMMAND
Manage networks
Commands:connect     Connect a container to a networkcreate     Create a networkdisconnect Disconnect a container from a networkinspect     Display detailed information on one or more networksls         List networksprune       Remove all unused networksrm         Remove one or more networks
Run 'docker network COMMAND --help' for more 
information on a command.
[root@docker1 ~]# docker network ls
NETWORK ID     NAME           DRIVER   SCOPE
01fa71620d73   bridge         bridge   local
f46543c13863   host           host     local
c220508b862f   none           null     local

 每一台dcoker host上的docker0所在网段完全一样,但是会造成跨主机的容器无法通信。

2.host

与主机共享网络,可让容器连接外网所有容器与docker主机在同一个网络中,容器和外网相互访问。

绑定host主机网络

[root@docker001 001]# docker run -it --network host yum:v0 /bin/bash
[root@docker001 /]# yum -y install iprout
#内部查看ip是本地主机ip
# 外部查看ip 没有
[root@docker001 001]# docker inspect 306d|grep IPAdd"SecondaryIPAddresses": null,"IPAddress": "","IPAddress": "",

主机名同真机,网络也同真机

优点:可以直接访问容器

缺点:端口占用,多容器同时运行一个服务,不建议,在测试环境中使用

3.none

容器仅仅有lo网卡,不能与外界链接,在高级应用中使用lo网卡,无法链接外网

2.跨主机网络

跨主机之间的通讯工具---flannel

overlay 覆盖型网络,不支持路由转发,通过数据etcd数据库保存子网信息以及网络分配信息

部署两台主机

主机名

ip

功能

软件

node1

x.x.x.10

主控主机

etcd flannel docker

node2

x.x.x.11

被控主机

etcd docker

1.主控 
1.安装etcd数据库
yum -y install etcd
2.安装flannel
yum -y install flanneld
3.修改etcd数据库配置
vim /etc/etcd/etcd.conf

 

4.启动访问
systemctl start etcd.service
5.设置开机自启
systemctl enable etcd.service 
6.测试端口
[root@node1 ~]# netstat -lnput |grep 2379
tcp6       0      0 :::2379                 :::*                    LISTEN      2161/etcd           
[root@node1 ~]# netstat -lnput |grep 4001
tcp6       0      0 :::4001                 :::*                    LISTEN      2161/etcd           
7.测试数据库功能
[root@node1 ~]# etcdctl set testdir/testkey0 1000
1000
[root@node1 ~]# etcdctl get testdir/testkey0 1000
1000
8.修改flannel配置文件
[root@node1 ~]# vim /etc/sysconfig/flanneld

9.向数据库中存入网段信息
[root@node1 ~]# etcdctl mk /atomic.io/network/config '{ "Network":"172.20.0.0/16" }'
[root@node1 ~]# etcdctl get /atomic.io/network/config
{ "Network":"172.20.0.0/16" }
10.启动并设置开机启动flanneld 
[root@node1 ~]# systemctl start flanneld
[root@node1 ~]# systemctl enable flanneld
11.查看ip地址
[root@node1 ~]# ip a s
...
3: flannel0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1472 qdisc pfifo_fast state UNKNOWN group default qlen 500link/none inet 172.20.27.0/16 scope global flannel0valid_lft forever preferred_lft foreverinet6 fe80::23c1:2c4f:5a44:5961/64 scope link flags 800 valid_lft forever preferred_lft forever
12.安装并启动docker
#执行安装docker的脚本
source docker.sh#启动docker
systemctl start docker
13.启动docker服务后查看ip
systemctl start docker.service 
ifconfig 
14.从其他主机复制一份daemon.json文件
scp 
root@192.168.1.50:/etc/docker/daemon.json /etc/docker/
15.修改添加桥ip和路由字节1472-1500
[root@node1 ~]# vim /etc/docker/daemon.json 
[root@node1 ~]# cat /etc/docker/daemon.json 
{"insecure-registries":["http://192.168.1.50" ],"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"
],
"bip": "172.20.27.1/24",
"mtu": 1472
}
16.修改docker配置文件
vim /usr/lib/systemd/system/docker.service
17.加载配置,重启docker服务
systemctl daemon-reload 
systemctl restart docker.service 
18.查看ip地址
ip a s
19.拉取一个镜像测试ip地址
docker pull centos
docker run -it centos:latest /bin/bash
2.从控
1.安装flannel
yum -y install flannel
2.配置flanner 配置flannel要访问的etcd数据库所在的位置
cat /etc/sysconfig/flanneld 
# Flanneld configuration options  
# etcd url location. Point this to the server 
where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://192.168.71.10:2379"
# etcd config key. This is the configuration key 
that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"
# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
3.启动flannel
systemctl star flanneld
4.查看flannel分配的ip网段
cat /run/flannel/subnet.env 
FLANNEL_NETWORK=172.20.0.0/16
FLANNEL_SUBNET=172.20.59.1/24
FLANNEL_MTU=1472
FLANNEL_IPMASQ=false
5.安装docker
source docker.sh
6.将flannel分配⽹段写入到daemon.json
cat /etc/docker/daemon.json 
{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries":["http://192.168.71.50:5000"],"bip" : "172.20.99.1/24","mtu" : 1472
}
[root@localhost ~]# 
7.重启docaker 如果不能重启,就修改一下远程管理
ystemctl restart docker.service
8.拉取⼀个centos镜像
docker pull centos
9.ping node1中容器的ip地址 
ping 172.20.27.2

这篇关于容器网络(桥接、host、none)及跨主机网络(etcd、flannel、docker)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116483

相关文章

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施: