Docker介绍及架构(1)
1.什么是容器
-
传统的虚拟化技术,比如VMWare、KVM、Xen,目标是创建完整的虚拟机。为了运行应用,除了部署应用本身及其依赖(通常几十MB),还得安装整个操作系统(几十GB)。
-
由于所有的容器共享同一个Host OS,这使得容器在体积上要比虚拟机小很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快、开销更小,也更容易迁移。
2.Docker的特性
-
Docker可以将任何应用及其依赖打包成一个轻量级、可移植、自包含的容器。
-
其实,“集装箱”和“容器”对应的英文单词都是“Container”。
3.Docker架构
Docker的核心组件包括:
- Docker客户端:Client
- Docker服务器:Docker daemon
- Docker镜像:Image
- Registry
- Docker容器:Container
- Docker采用的是Client/Server架构。
- 客户端向服务器发送请求,服务器负责构建、运行和分发容器。
- 客户端和服务器可以运行在同一个Host上,客户端也可以通过socket或REST API与远程的服务器通信。
3.1.Docker客户端
-
最常用的Docker客户端是docker命令。
-
通过docker我们可以方便地在Host上构建和运行容器。
- 除了docker命令行工具,用户也可以通过REST API与服务器通信。
3.2.Docker服务器
- Docker daemon是服务器组件,以Linux后台服务的方式运行
root@Tod:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2022-08-07 12:56:01 CST; 10h ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 614 (dockerd)
-
Docker daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。
-
默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听。
3.3.Docker镜像
-
可将Docker镜像看成只读模板,通过它可以创建Docker容器。
-
镜像有多种生成方法:
- (1)从无到有开始创建镜像;
- (2)下载并使用别人创建好的现成的镜像;
- (3)在现有镜像上创建新的镜像。
-
可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作Dockerfile,通过执行
docker build <docker-file>
命令可以构建出Docker镜像
3.4.Docker容器
-
Docker容器就是Docker镜像的运行实例。
-
用户可以通过CLI(Docker)或是API启动、停止、移动或删除容器。
-
可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。
3.5.Registry
-
Registry是存放Docker镜像的仓库,Registry分私有和公有两种。
-
Docker Hub(https://hub.docker.com/)是默认的Registry,由Docker公司维护,上面有数以万计的镜像,用户可以自由下载和使用。
-
docker pull
命令可以从Registry下载镜像。 -
docker run
命令则是先下载镜像(如果本地没有),然后再启动容器。 -
docker images
可以查看到httpd已经下载到本地 -
docker ps
或者docker container ls
显示容器正在运行