容器技术最全详解(图文全面总结)

大家好,我是IT小灵通;

下面我来全面详解下Docker容器;

大家可以留个关注,后续会给大家分享所有IT小知识。

介绍

Docker是云原生非常核心的组件,也是大厂经常考察的内容,下面我就全面来详解Docker容器

容器技术

容器是一种标准的软件单元,它将代码及其所有依赖项,打包在一起,以确保应用程序在不同计算环境中的一致性运行。

容器类似于集装箱,每个集装箱都是一个独立的单位,可以装载不同种类的货物,集装箱之间互不影响。

如下图所示:

同理,每个容器都是一个独立的运行环境,包含:应用程序、及其所有依赖项。

容器在运行时是隔离的,每个容器有自己的文件系统、网络接口....等,保证应用程序的安全性、和独立性。

并且,容器简化了应用程序的部署、和管理。

开发者可以在本地开发和测试容器,然后将其部署到生产环境中,确保应用程序在不同环境中的一致性。

Docker容器

图片

Docker 本质就是容器技术的一种实现而已,它提供了容器的构建、分发和运行工具。

Docker 通过:Docker 镜像、和 Docker 容器,来实现应用程序的容器化。

如下图所示:

1. Docker 镜像

Docker 镜像(Docker Image):是构建、分发、和运行容器的基础。

Docker 镜像是一个只读模板,它包含了运行容器所需的所有内容。

比如,包括:代码、运行时、库、环境变量、和配置文件....等。

镜像可以通过编写一个Dockerfile文件来创建,该文件定义了如何构建镜像,例如:基础镜像、复制文件、运行命令等。

docker build

Docker 镜像,采用分层文件系统,每一层都是前一层的增量更新,这使得镜像更加高效,因为相同的层可以被多个镜像共享。

2. Docker 容器

Docker 容器:是镜像的运行实例,它是一个独立的、可执行的包,包含了:运行应用程序所需的所有内容。

每个容器,都有自己的文件系统、网络接口和进程空间。

与其他容器和宿主系统隔离,这种隔离性使得容器内的应用程序运行更加安全和独立。

这里的实现,主要会涉及到:命名空间(Namespaces)。

命名空间,是 Linux 内核的一种特性,它可以隔离不同容器的进程、网络、挂载点、UTS、IPC 和用户。

通过命名空间,容器中的进程看不到也无法影响其他容器的进程。

3. Docker 仓库

Docker 仓库:是用于存储、和分发 Docker 镜像的服务。

比如:最流行的公共 Docker 镜像仓库,提供了大量的官方镜像、和社区镜像。

如下图所示:

Docker Hub 上有大量的公共镜像,这些镜像覆盖了各种应用和服务,可以极大地简化开发、和部署过程。

例如:官方的操作系统镜像,(比如:Ubuntu)、数据库镜像(如 MySQL、PostgreSQL......等)、以及编程语言运行时镜像(如 Java、PHP、Python......)等。

三者之间的,工作流程如下:

第一步:构建(Build)

首先,通过 Dockerfile 定义镜像的构建过程,使用 docker build 命令创建镜像。

第二步:分发(Ship)

其次,将构建好的镜像,推送到镜像仓库(比如:Docker Hub 、或私有仓库),使用 docker push 命令进行分发。

第三步:运行(Run)

从镜像创建,并启动容器,使用 docker run 命令运行容器。

容器与虚拟机的区别

图片

Docker 容器,不包含操作系统内核,而是共享宿主操作系统的内核。

而虚拟机,包含:一个独立的操作系统实例,包括:内核,所以,虚拟机就比较重。

虚拟机,适用于需要运行不同操作系统、或需要强隔离的场景。

而容器,只包含应用程序及其运行时所需的依赖项(如:代码、库文件、系统工具...等)。

容器适用于需要快速部署、高密度、和一致性环境的场景,如:微服务架构、CI/CD 流水线......等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值