JAVA全系列 教程
3762个小节阅读:7090.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
镜像
用面向对象的思维可以把镜像(Image)理解为类,容器(Container)理解为对象。一个镜像可以在不同的宿主机(物理机或是虚拟机)上启动为容器,并且几乎不需要多余的配置。
镜像的本质是一个操作系统的文件系统(Rootfs),而容器需要调用内核时实际上是使用了宿主机的内核。
镜像由多个层组成,每层叠加后,从外部来看就是一个独立的对象,镜像内是一个精简的操作系统,同时还包含应用运行所必须的文件和依赖包。
[root@fedora ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
a2abf6c4d29d: Already exists
c7a4e4382001: Pull complete
4044b9ba67c9: Pull complete
c8388a79482f: Pull complete
413c8bb60be2: Pull complete
1abfd3011519: Pull complete
Digest: sha256:db485f2e245b5b3329fdc7eff4eb00f913e09d8feb9ca720788059fdc2ed8339
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
镜像是一种构建时(build-time)结构,容器可以理解为运行时(run-time)结构,如下图所示:
命名空间
由于容器与宿主机共享内核,所以很容易产生冲突,下面是一些常见问题的冲突,例如:
那么Docker是如何解决这些问题的呢?Docker为每个容器创建一个PID命名空间,不同命名空间的PID可能相同,但不影响程序的运行。