2.Docker的安装

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 整体架构及底层通信原理

  1. 用户使用Docker Client 与Docker Daemon建立通信,并发送请求给后者;
  2. Docker Daemon作为Docker架构的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求;
  3. Docker Engine 执行Docker内部的一系列工作,使每一项工作都是以一个Job的形式存在;
  4. Job运行过程中,当需要容器镜像时,就从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver 将下载镜像以Graph的形式存储;
  5. 当需要为Docker创建网络环境时,通过网络管理驱动 Network driver 创建并配置Docker容器网络环境;
  6. 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成;
  7. Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

3.Docker在Centos7上安装Docker

  1. 官网安装指南

    https://docs.docker.com/engine/install/centos/

  2. 检查CentOS的版本

    复制代码
    1. CentOS 7
    2. CentOS 8 (stream)
    3. CentOS 9 (stream)
    4. centos-extras库必须启用,默认情况下,此存储库是启用的,但是如果已禁用它,则需要重新启用它。
  3. 删除旧的版本

    1. 卸载Docker Engine

      sh 复制代码
      sudo yum remove docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-engine
  1. 手动删除所有的image、container和文件

    sh 复制代码
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
  2. 安装基本的工具包

    复制代码
    yum install -y yum-utils
  1. 设置稳定的镜像仓库

    复制代码
     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

    我们最好加上国内的阿里云镜像仓库,否则有时候会拉取不下来,错误如下:

  2. 安装Docker Engine

    1. 安装最新版本的docker

      复制代码
       sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


  1. 启动docker

    复制代码
    sudo systemctl start docker
  2. 验证docker

    复制代码
    sudo docker run hello-world
    ```![在这里插入图片描述](https://img-blog.csdnimg.cn/a6e72710c5e24ef79cae7433084f7a56.png)

就这么简单,我们就成功的安装了docker。

4.安装镜像加速器

由于网络原因,可能导致我们的下载速度比较慢,我们最好加入安装镜像加速器,加速下载镜像文件。这里我们以安装阿里云的镜像加速器为例来说明。

我们在阿里云产品上找到容器镜像服务--->镜像工具--->镜像加速器,可以看到里面的详细的配置和说明。

sh 复制代码
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
相关推荐
一水鉴天1 小时前
整体设计 逻辑系统程序 之18 Source 容器(Docker)承载 C/P/D 三式的完整设计与双闭环验证 之2
docker·架构·认知科学·公共逻辑
飞快的蜗牛3 小时前
利用linux系统自带的cron 定时备份数据库,不需要写代码了
java·docker
火星MARK3 小时前
k8s面试题
容器·面试·kubernetes
香吧香4 小时前
Docker Registry 使用总结
docker
赵渝强老师4 小时前
【赵渝强老师】Docker容器的资源管理机制
linux·docker·容器·kubernetes
haicome6 小时前
deepseek部署
docker·ragflow·deepseek 部署
乄bluefox6 小时前
保姆级docker部署nacos集群
java·docker·容器
每天进步一点_JL6 小时前
Docker 是什么?
后端·docker·容器
一叶飘零_sweeeet7 小时前
从 0 到 1 掌控云原生部署:Java 项目的 Docker 容器化与 K8s 集群实战指南
docker·云原生·kubernetes·项目部署
森林猿7 小时前
docker-compose-kafka 4.1.0
docker·容器·kafka