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
相关推荐
老司机张师傅20 分钟前
【微服务实战之Docker容器】第七章-Dockerfile解析
容器·dockerfile·虚悬镜像·docker学习
微信-since8119227 分钟前
[ruby on rails] 安装docker
后端·docker·ruby on rails
吴半杯2 小时前
gateway漏洞(CVE-2022-22947)
docker·kubernetes·gateway
今天我刷leetcode了吗2 小时前
docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker
tcp/ip·docker·电脑
lwprain3 小时前
常用docker应用部署,wordpress、mysql、tomcat、nginx、redis
mysql·docker·tomcat
Code_Artist4 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
mengao12344 小时前
centos 服务器 docker 使用代理
服务器·docker·centos
Eternal-Student5 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
不是二师兄的八戒5 小时前
本地 PHP 和 Java 开发环境 Docker 化与配置开机自启
java·docker·php
码农小丘5 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器