Docker 是干什么的?

发布于:2025-05-15 ⋅ 阅读:(10) ⋅ 点赞:(0)

Docker 是一个开源的平台,我们可以用 Docker 来开发、部署和运行我们的应用程序。Docker 可以帮助我们将应用程序和底层基础设施进行分离,以帮助我们更快的实现交付。通过 Docker 技术,我们可以像管理我们的应用一样管理我们的基础设施(比如操作系统、依赖的开发包等)。通过 Docker 技术,可以精简我们的整个开发和交互流程。

传统的软件开发模式是: 开发人员在本地先开发好应用,然后提交到测试环境,测试人员测试没有问题,最终部署到线上,供用户使用。

痛点:由于交付的单元是应用,但是应用又依赖于基础设施,比如依赖操作系统、开发包版本等等。这些因素的不确定性,导致了上面问题的发生。

有什么方式解决这个问题

相信大家都安装过虚拟机,比如你想在 Windows 电脑上搭建一个 Linux 系统,需要提前下载好 Linux 系统的 ISO 镜像文件,然后通过它就可以安装一个 Linux 系统。

Vmware 虚拟机
Vmware 虚拟机

这和 Docker 有什么关系呢?Docker 其实是一个轻量级的虚拟化技术。Docker 可以让开发者在构建应用时,将应用与其依赖的环境一起打包到一个可移植的容器中, 然后很方便地发布到任意操作系统中。倘若,测试人员面向的是整个打包好的容器进行测试,那么,上述提到的问题将不会发生。

Docker 的 Logo
在这里插入图片描述

Docker 于 2013 年 3 月以 Apache 2.0 协议开源,并将源码放在了 GitHub 上进行维护。自从开源后,越来越多的工程师发现了它的优点,人气迅速攀升,成为当时最火爆的开源技术之一。

在 2013 年底,由于 Docker 太火了,dotCloud 公司干脆决定将公司名改为 Docker Inc。

Docker 架构

为了方便理解,先放一张官网的 Docker 架构图:

在这里插入图片描述

Docker 主要由以下部分组成:

Docker Client;
Docker Daemon;
Docker Registry。

Docker Client

安装好 Docker 后,可以通过在命令窗口中敲 docker 命令,来执行相关操作,如 docker run 等。这个操作就是通过 Docker Client 客户端来执行的。

Docker Client 用于和 Docker Daemon 交互。

Docker Daemon

Docker Daemon 是一个 Docker 后台运行的守护进程,我们的 Docker Client 的命令就是和 Docker Daemon 来进行交互的。

启动 Docker daemon 可以通过如下命令:

service docker start

或:

systemctl start docker.service

启动成功后,通过 ps命令即可看到 docker daemon 进程:

$ ps aux | grep dockerd
root     10214  1.2  0.0 1014252 23768 ?       Ssl  00:58   0:00 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2

Docker Registry

Registry 意为注册中心,它是用来存储 Docker 镜像的地方,后续我们下载镜像都会从注册中心下载。需要注意,注册中心有很多,常见的如官方的 Docker Hub,另外,各大云厂商也提供了自己的注册中心,比如阿里云、腾讯云等,甚至你也可以搭建自己的私有注册中心。

Docker 默认使用 Docker Hub,比如我们执行 docker pull <image-name> 时,Docker 默认去 Docker Hub 中寻找名字为 image-name 的镜像。如果使用自己的 Registry 需要进行单独的配置。

Docker Images

Docker 镜像可以理解为存于磁盘上面可以通过特定方式执行的静态文件,可以类比传统虚拟机中的 ISO 文件。(Docker 镜像是可以被 Docker Daemon 识别并执行的特定文件)。

Docker Container

Container 也就是容器。Docker 官方对容器的定义如下:

A container is a runnable instance of an image.

翻译过来,也非常好理解:

容器是镜像的运行实例。

网站公告

今日签到

点亮在社区的每一天
去签到