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

      sudo yum remove docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-engine
      

在这里插入图片描述

  1. 手动删除所有的image、container和文件

    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
    

    在这里插入图片描述

就这么简单,我们就成功的安装了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

http://www.niftyadmin.cn/n/5144607.html

相关文章

Java——java.time包使用方法详解

Java——time包使用方法详解 java.time 包是 Java 8 引入的新日期和时间 API&#xff08;JSR 310&#xff09;&#xff0c;用于替代旧的 java.util.Date 和 java.util.Calendar 类。它提供了一组全新的类来处理日期、时间、时间间隔、时区等&#xff0c;具有更好的设计和易用性…

吴文俊人工智能科学技术奖在哪可以查到?

吴文俊人工智能科学技术奖 “吴文俊人工智能科学技术奖&#xff08;WU WEN JUN AI SCIENCE & TECHNOLOGY AWARD&#xff09;”是我国智能科学技术领域唯一以享誉海内外的杰出科学家、数学大师、人工智能先驱、我国智能科学研究的开拓者和领军人、首届国家最高科学技术奖获…

深孔枪钻厂家,科研管理系统思路

序号 名称 参数及技术指标 &#xff08;一&#xff09;系统性能要求 1&#xff0e;系统界面&#xff1a;支持中英文界面自由切换。 2. 系统兼容性&#xff1a;支持主流浏览器&#xff0c;如&#xff1a;IE11 以上、 360 安全浏览器、Firefox、Google Ch…

SpringBoot+MINIO

Linux安装MINIO https://blog.csdn.net/tongxin_tongmeng/article/details/133934115 MINIO创建桶MINIO创建秘钥MINIO的API路径 http://your-server-ip:9000 注意&#xff1a;API路径在日志文件中/opt/minio/minio.log pom.xml <!-- https://mvnrepository.com/artifact/com…

oracle导出导入dmp文件

使用dmp方式导出时有些表未导出 原因&#xff1a;表创建完未执行过 1、在plsql中执行下面sql语句&#xff0c;将查询出的结果复制出来依次执行。 select alter table ‘|| table_name || ’ allocate extent;’ from user_tables where segment_created‘NO’; 2、导出dmp文件 …

深孔枪钻厂家,发布社区工作管理软件明细

成都工具研究所有限公司的前身是成都工具研究所&#xff0c;于1956年创建于北京&#xff0c;是原机械工业部的直属研究所&#xff0c;是我国机械工业的综合性工具科研机构。公司&#xff1a;www.ctri.com.cn 公司主要从事精密切削工具、精密测量仪器以及表面改性处理技术的技术…

单例模式-懒汉式双重锁机制

正是因为担心并发问题&#xff0c;才在双重检查锁模式中的synchronized内部进行了再次判断 tnull。 在第一次判断 tnull 之后&#xff0c;当多个线程同时通过这个检查&#xff0c;其中一个线程会获得锁并创建实例。然而&#xff0c;其他线程在此期间可能会继续等待锁释放&…

UniPro自定义个人专属工作台 大幅提升工作效率

很多研发团队在开完每日站会后&#xff0c;工程师的工作习惯便是打开研发管理系统&#xff0c;先看看自己的待办事项&#xff0c;或是查看同事的需求、评论&#xff0c;亦或是查看今日份工作的高优先级项等等。 如何方便工程师能够快速查看和了解一天的工作究竟从哪开始呢&…