目 录CONTENT

文章目录

【第十二期】-容器技术之基础知识篇

第一部分:容器的本质

在前面的章节中, 我们使用大量的容器技术进行服务部署, 那么容器是什么东西?docker又是什么?两者有什么区别和关联?其实从docker的标识就可以看出来了, 把容器类比成码头集装箱,docker就是码头搬运管理系统

640-gfdO

集装箱(容器)内部装好了程序、依赖、配置,运行环境, 自成一套完整运行环境,是一个特殊的隔离环境, 可以让进程只看到环境里的有限资讯, 不对外施加影响。我们来看下面这个例子, 宿主机系统为Ubuntu26.04,ps进程有4个,拉取Ubuntu22.04镜像并运行,ps进程只有2个

root@ubuntu01:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=26.04
DISTRIB_CODENAME=resolute
DISTRIB_DESCRIPTION="Ubuntu 26.04 LTS"
root@ubuntu01:~#
root@ubuntu01:~#
root@ubuntu01:~# ps
    PID TTY          TIME CMD
   2387 pts/1    00:00:00 sudo
   2388 pts/1    00:00:00 su
   2390 pts/1    00:00:00 bash
  29061 pts/1    00:00:00 ps
root@ubuntu01:~#

root@ubuntu01:~# docker pull ubuntu:jammy
jammy: Pulling from library/ubuntu
d6834b4a794c: Pull complete
632e0587446e: Download complete
Digest: sha256:0e0a0fc6d18feda9db1590da249ac93e8d5abfea8f4c3c0c849ce512b5ef8982
Status: Downloaded newer image for ubuntu:jammy
docker.io/library/ubuntu:jammy

root@ubuntu01:~# docker run -it ubuntu:jammy bash
root@791732213fd9:/#
root@791732213fd9:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.5 LTS"
root@964136b6eaf5:/# ps
    PID TTY          TIME CMD
      1 pts/0    00:00:00 bash
      9 pts/0    00:00:00 ps
root@964136b6eaf5:/#

码头搬运管理系统(docker)是一套能制作、运输、调度、管理所有集装箱的完整码头工具, 如下: docker pull: 从仓库码头拉取标准集装箱图纸(镜像)docker run: 把图纸生成实体集装箱(启动容器)docker start/stop: 吊装、放下集装箱,启停运行docker rm: 废弃、移除集装箱docker images: 仓库里存放的集装箱模板docker compose: 成套集装箱组合运输方案(多容器打包)Docker Engine: 码头后台总调度,负责管控所有集装箱资源

第二部分:为什么要隔离

隔离主要有两个优点, 第一出于系统安全考量, 容器只可以在有限范围内自由活动,绝不允许越界,第二就是可以降本增效

图片

第三部分:虚拟机和容器的区别

到这里可能有些人会觉得那容器和虚拟机差不多,那两者有什么区别的?我们画一张图大家就会比较清晰,虚拟机就像房车,每台车自带发动机(内核),水电系统,体积大,油耗高, 搬家很慢。容器就像集装箱, 全部放在同一辆货车(工业宿主机内核),箱子只装货物(应用), 轻便秒开

图片

第四部分:容器是如何实现隔离

隔离技术主要依赖操作系统内核的三个技术: namespace,cgroup, chroot,我们把宿主机比作一栋大楼,namespace可以创建独立的文件系统,主机名,进程号等等, 相当于进程小房间,cgroup是来实现对资源优先级和配额限制,相当于小房间的水电表,chroot可以更改进程根目录,使其可以访问特定目录,相当于小房间的地砖,有了这三个,完整的隔离就出现了。

640-lXhu

第五部分:容器技术的3个核心概念

容器技术中有3个比较重要的核心概念,分别是容器,镜像和镜像仓库,容器前面已经讲过,这里不再赘述,存放镜像模板的地方就是镜像仓库(阿里云/Docker Hub...),  镜像是容器的静态形式,相当于装修图纸/模板,在第一部分中,我们到镜像仓库下载一个ubuntu的镜像并运行,就是相当于到镜像仓库拿到一个图纸并成功盖好房子。

640-xhQd

其他部分就不再啰嗦, 有兴趣大家可以自行至docker官网学习哦

640-FVKh


0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区