1.认识Docker的基本架构
下面这张图是docker官网上的,介绍了整个Docker的基础架构,我们根据这张图来学习一下docker的涉及到的一些相关概念。
1.1 Docker的架构组成
Docker架构是由Client(客户端)、Docker Host(服务端)、Registry(远程仓库)组成。
- Client(客户端):使用Docker API向服务端发送命令,比如build、run、pull、push等命令;
- Docker Host(服务端):启动了一个守护进程,它来真正管理镜像和容器,相应的,也接收客户端的命令;
- Registry(远程仓库):主要就是存储镜像文件,方便共享,类似git一样。
Docker是一个Client-Server结构的系统,Docker守护进程运行的主机上,通过Socket连接从客户端访问,守护进程接收到客户端的命令来管理运行在主机上的容器。
1.2 Docker的三大要素
- Image(镜像):Docker镜像就好比一个模板,可以通过这模板来创建容器服务,通过这个镜像可以创建多个容器。
- container(容器):容器就可以理解成一个简易版的Linux运行时环境,在这个Linux中,还运行这我们的应用程序。
- 仓库(repository):集中存放镜像文件的地方。仓库分为公开仓库和私有仓库,Docker官方的公开仓库是Docker Hub:https://hub.docker.com/。当然我们国内也有不少公开仓库,包括阿里云、网易云等;
那么怎么更好的理解这散打要素呢?学过java等面向对象编程的同学,我们可以类比一下,所谓的镜像其实就是对应java的类,容器就对应java的对象(类的实例),一个类可以new 出很多对象实例,同理,一个镜像也可以生成很多容器;仓库就可以类比Maven仓库,只不过Maven放的是jar包,而仓库放的是镜像文件。
1.3 小结
Image可以看作是容器的模板,Docker根据image镜像文件生成容器实例,同一个image镜像,可以生成多个同时运行的容器实例。
2.Docker 整体架构及底层通信原理
- 用户使用Docker Client 与Docker Daemon建立通信,并发送请求给后者;
- Docker Daemon作为Docker架构的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求;
- Docker Engine 执行Docker内部的一系列工作,使每一项工作都是以一个Job的形式存在;
- Job运行过程中,当需要容器镜像时,就从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver 将下载镜像以Graph的形式存储;
- 当需要为Docker创建网络环境时,通过网络管理驱动 Network driver 创建并配置Docker容器网络环境;
- 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成;
- Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。
3.Docker在Centos7上安装Docker
-
官网安装指南
https://docs.docker.com/engine/install/centos/
-
检查CentOS的版本
1. CentOS 7 2. CentOS 8 (stream) 3. CentOS 9 (stream) 4. centos-extras库必须启用,默认情况下,此存储库是启用的,但是如果已禁用它,则需要重新启用它。
-
删除旧的版本
-
卸载Docker Engine
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
-
手动删除所有的image、container和文件
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
-
安装基本的工具包
yum install -y yum-utils
-
设置稳定的镜像仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
我们最好加上国内的阿里云镜像仓库,否则有时候会拉取不下来,错误如下:
-
安装Docker Engine
-
安装最新版本的docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
-
-
启动docker
sudo systemctl start docker
-
验证docker
sudo docker run hello-world
就这么简单,我们就成功的安装了docker。
4.安装镜像加速器
由于网络原因,可能导致我们的下载速度比较慢,我们最好加入安装镜像加速器,加速下载镜像文件。这里我们以安装阿里云的镜像加速器为例来说明。
我们在阿里云产品上找到容器镜像服务—>镜像工具—>镜像加速器,可以看到里面的详细的配置和说明。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxs.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker