Docker技术及其网络

Linux操作系统第一个进程是Systemd,使用系统默认创建的namespacecgroup

Docker 基于 Linux内核的CgroupNamespace,以及 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。是linux安装的一个服务,安装方式apt-get install docker,服务启动后会有一个进程docker daemondocker执行的任何命令都是在与dameon进行交互,由dameon执行操作。

 

1、namespacecgroup

Linux每一个进程是一个struct对象,每个struct都带有一个namespace(命名空间)结构和cgroup(control group 控制组)结构,namespace包含文件系统(mnt),通信(ipc),网络(net)y用户(usr),主机名和域名(uts),pid等属性,cgroup包含内存,cpu,磁盘/IO等资源控制属性

 

不同的进程可配置不同的namespacecgroup以达到进程使用和资源的隔离。

1. docker与虚拟机区别

 

Docker严格意义上只是linux操作系统的一个进程,通过docker启动的容器也是linux上的一个进程,但在网络和文件系统上进行了隔离。虚拟机是拥有自己完整的操作系统,虚拟机上所有的应用都是此操作系统的进程。Docker是轻量级服务,比虚拟技术更轻便和快捷,能更,只要在一个环境打包好了镜像,在其它环境就能很好的复用,总体特点体现为:

 

更高效地利用系统资源,更快速的启动时间,一致的运行环境,持续交付和部署,更轻松地迁移,更轻松地维护和扩展。

 

容器的操作:

启动: docker run  -it交互 -d 后台运行 -p端口映射 -V磁盘挂载

启动容器docker start/restart

停止容器docker stop

查看容器进程 docker ps (-a:包含已停止或未成功启动的容器)

查看容器细节: docker inspect <containerid>/容器名称

进入容器;

Docker attach:

通过nsenter

PID=$(docker inspect --format "{ .State.Pid ]<container>

$ nsenter--target $PID --mount --uts --ipc --net--pid

拷贝文件至容器内

docker cp file1 <containerid>:/file-to-path

2、docker网络技术

 

Docker网络利用的是桥接技术,有三种设置网络的模式。

 

  1)Bridge模式

默认采用Bridge模式,docker服务启动后默认创建docker0网桥,ip172.17.0.1/16(子网掩码:255.255.255.0)docker0会连接到主机的eth0(网络连接服务)。利用docke run启动容器网络时,会自动创建veth设备(类似物理网线),一端连接容器,一端连接docker0网桥,分配与docker0同网段ip,例如172.17.0.2,因此当前主机上所有容器网络都是互联互通的,都是由docker0分配网络ip。容器请求数据包是通过docker0流向主机eth0再向外部网络输出。

 

2)Host模式

自主创建网桥mybridge,网桥分配的是主机ip(或与主机ip同网段ip)docker run启动的容器连接到mybridge,并且分配与主机同网段ip,这样的网络数据传输简单,不需要经过封包解包的数据传输,但需要很好的规划网络分配。

3)overlayunderlay

 Overlaybridge模式,容器数据向外传输时需要先进行封udp数据包,加上主机ip以及被请求端服务主机ip,当数据到达对端服务器时需要解包,拆解外层主机数据,最终得到真正传输数据(被请求容器服务地址,请求数据),在数据传输过程中封包解包的设备类比虚拟机中的VTEP设备。

 

 

UnderlayHost模式,采用主机的网络配置。

 

 

posted @   丝絮  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示