Docker-学习笔记(一)

虚拟机类型

Host型

在这里插入图片描述
在主机OS上通过虚拟软件的驱动搭建虚拟环境
例;VirtualBox、VMWare

Hyper型

在这里插入图片描述
通过硬件上的Hyper技术实现虚拟的技术,不通过主机OS直接控制硬件。
例;KVM、Hyper-V、Xen

容器型

在这里插入图片描述
通过运行在主机上的容器驱动,实现多个虚拟环境的技术

Docker的优势

  1. 处理速度快
    不需要为每一个VM分配CPU,内存,存储等资源,减少处理目的以外的访问时间
    每台VM因为没有OS,消费的资源也比较少
  2. 启动快
    不用启动OS,直接service启动即可
  3. 可移植性高
    正像Docker所推崇的,集装箱一样,打包即走,集装箱内配置好环境和各种设置的话,可以即时使用
    还可以通过Dockerfile或者Docker-compose实现infra的代码化
  4. 共享性
    通过DockerHub等的管理,image的共享管理

Docker的劣势

依赖于base主机的OS

Docker的组件

Docker Engine

Docker image作成,容器启动等的Docker核心组件,
利用Linux的内核机能实现主处理,以Docker daemon形式动作。

Docker Compose

集中管理复数Docker容器的组件。

Docker Registry

公开/分享 Docker image的组件

Docker Machine

在非Linux环境,使用命令自动生成Docker实行环境的组件

Docker Swarm

容器的cluster集中化管理组件。
K8s是市场的开源代表。

Docker Kitematic

Docker的GUI工具组件

Docker Hub

Docker Hub是官方的库服务器。

Docker的内部结构

namespace

Docker使用Linux的名称空间机能实现容器的分区化。
Linux利用名称空间的概念,把不同的process放在不同的名称空间内实现容器化的隔离。有6种名称空间。

  1. PID:程序关联
  2. Network:IP地址,端口,路由,过滤等网络相关
  3. UID/GID:用户ID,群组ID相关
  4. MOUNT:外挂相关
  5. UTS:host名,domain名等相关
  6. IPC:信息队列等程序间通信相关

cgroup(control group)

Docker使用Linux的cgroup机能实现物理主机的资源(CPU,内存等)管理控制。
通过把process分组化,实现各个组的资源使用量限制。

网络

连接机能(link)

给每个容器分配一个虚拟NIC(eth0),172.17.0.0/16 段的IP由DHCP分割。
各容器的虚拟NIC(eth0)由主机上的一个桥(docker0)端口连接,相当于桥接器的作用,实现各容器之间的连接机能。该机能仅限一台物理主机,多台物理主机之间不能实现互联。

image.png

ip a

通过该命令查看主机Host上的桥接器的inferface

(省略)
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:bd:f7:d8:19 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever

外部通信

Docker使用Linux内核的iptables机能,实现hostOS的外部通信。
docker0和hostOS的物理NIC之间利用NAPT(Network Address Port Translation)实现私网到公网的通信。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值