Docker基础知识 (1) - Docker 架构、Docker 安装、Docker 镜像加速


Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Docker 的应用场景:

    (1) Web 应用的自动化打包和发布。
    (2) 自动化测试和持续集成、发布。
    (3) 在服务型环境中部署和调整数据库或其他的后台应用。
    (4) 编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点:

    (1) 快速、一致地交付应用程序
    (2) 响应式部署和扩展
    (3) 在同一硬件上运行更多工作负载

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),一般使用社区版就可以了。

Docker:https://www.docker.com
Docker Github:https://github.com/docker/docker-ce


1. Docker 架构

    Docker 包括三个基本概念:

        (1) 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
        (2) 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
        (3) 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

    Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。

    Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 面向对象
容器 对象
镜像 类


    Docker 相关的一些概念,见下表。

概念 描述
镜像(Images) Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。
容器(Container) 容器是独立运行的一个或一组应用,是镜像运行时的实体。
客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。

我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Machine

Docker Machine 是一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装 Docker,

比如 VirtualBox、 Digital Ocean、Microsoft Azure。


        

2. Docker 安装

    1) CentOS 7 下安装

        Docker 支持以下的 64 位 CentOS 版本:

            更高版本 ...
            CentOS 8
            CentOS 7

        Docker 要求 CentOS 系统的内核版本高于 3.08,通过 uname -r 命令查看当前内核版本。

            $ uname -r

                3.10.0-1160.el7.x86_64

        确保 yum 包更新到最新。

            $ yum update

        使用官方安装脚本自动安装:

            $ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

        如果自动安装不成功,可以手动安装,步骤如下。

        (1) 卸载旧版本

            较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。

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

        (2) 设置 Docker 仓库

            安装所需的软件包,yum-utils 提供了 yum-config-manager,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

                $ sudo yum install -y yum-utils \
                                        device-mapper-persistent-data \
                                        lvm2

            使用官方仓库地址(访问速度比较慢):

                $ sudo yum-config-manager \
                        --add-repo \
                        https://download.docker.com/linux/centos/docker-ce.repo

            使用阿里云仓库地址:

                $ sudo yum-config-manager \
                        --add-repo \
                        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

            使用清华仓库地址:

                $ sudo yum-config-manager \
                        --add-repo \
                        https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

        (3) 安装 Docker Engine-Community

            a) 安装默认版本

                $ sudo yum install docker-ce docker-ce-cli containerd.io

                    如果提示您接受 GPG 密钥,选择:y。

                Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

            b) 安装指定版本

                列出并排序存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。

                $ sudo yum list docker-ce --showduplicates | sort -r

 1                     * updates: mirrors.aliyun.com
 2                     Loading mirror speeds from cached hostfile
 3                     Loaded plugins: fastestmirror, langpacks
 4                     Installed Packages
 5                     * extras: mirrors.aliyun.com
 6                     docker-ce.x86_64        3:20.10.9-3.el7         docker-ce-stable
 7                     docker-ce.x86_64        3:20.10.8-3.el7         docker-ce-stable
 8                     docker-ce.x86_64        3:20.10.7-3.el7         docker-ce-stable
 9                     docker-ce.x86_64        3:20.10.6-3.el7         docker-ce-stable
10                     docker-ce.x86_64        3:20.10.5-3.el7         docker-ce-stable
11 
12                     ...
13 
14                     docker-ce.x86_64        3:18.09.2-3.el7         docker-ce-stable
15                     docker-ce.x86_64        3:18.09.1-3.el7         docker-ce-stable
16                     docker-ce.x86_64        3:18.09.0-3.el7         docker-ce-stable
17                     docker-ce.x86_64        18.06.3.ce-3.el7        docker-ce-stable
18                     docker-ce.x86_64        18.06.2.ce-3.el7        docker-ce-stable
19 
20                     ...
21 
22                     * base: mirrors.aliyun.com
23                     Available Packages


                通过软件包名称安装指定版本,软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。

                    $ sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io

        (4) 启动 Docker

            启动 Docker,运行如下命令:

                $ sudo systemctl start docker

            查看 docker 镜像列表,运行如下命令:

                $ sudo docker images

              REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

 

    非 root 用户启动 Docker:

     将非 root 用户添加至 docker 用户组,加入 docker 用户组后,非 root 用户可以不用 sudo 启动 docker。

     # 将当前登陆的非 root 用户加入到 docker 用户组中
     $ sudo gpasswd -a $USER docker

     # 更新用户组
     $ newgrp docker

     $ systemctl start docker

    注:使用命令 sudo groupadd 'groupname' 来添加用户组。


        (5) 卸载 docker

            删除安装包:

                $ sudo yum remove docker-ce

            删除镜像、容器、配置文件等内容:

                $ sudo rm -rf /var/lib/docker

 

    2) Ubuntu 18.04 下安装

        Docker Engine-Community 支持以下的 Ubuntu 版本:

            更高版本 ...
            Disco 19.04
            Cosmic 18.10
            Bionic 18.04 (LTS)
            Xenial 16.04 (LTS)

            Docker Engine - Community 支持上 x86_64(或 amd64)armhf,arm64,s390x (IBM Z),和 ppc64le(IBM的Power)架构。

        更新 apt 包索引。

            $ sudo apt-get update

        使用官方安装脚本自动安装:

            curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

        如果自动安装不成功,可以手动安装,步骤如下。

        (1) 卸载旧版本

            Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们:

            $ sudo apt-get remove docker docker-engine docker.io containerd runc

            当前称为 Docker Engine-Community 软件包 docker-ce。

        (2) 设置 Docker 仓库

            安装 apt 依赖包,用于通过 HTTPS 来获取仓库:

                $ sudo apt-get install \
                                apt-transport-https \
                                ca-certificates \
                                curl \
                                gnupg-agent \
                                software-properties-common

            添加 Docker 的官方 GPG 密钥:

                $ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

            通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。

                $ sudo apt-key fingerprint 0EBFCD88

                pub   rsa4096 2017-02-22 [SCEA]
                    9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
                uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
                sub   rsa4096 2017-02-22 [S]


            使用以下指令设置稳定版仓库

                $ sudo add-apt-repository \
                        "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
                        $(lsb_release -cs) \
                        stable"

            注:这里使用国内镜像站 https://mirrors.ustc.edu.cn,如果无法安装,可以尝试替换为 http://mirrors.tuna.tsinghua.edu.cn 或 https://mirrors.aliyun.com 。

        (3) 安装 Docker Engine-Community

            a) 安装默认版本

                $ sudo apt-get install docker-ce docker-ce-cli containerd.io

            b) 安装指定版本

                列出本地仓库中可用的版本:

                $ apt-cache madison docker-ce

                    docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
                    docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
                    docker-ce | 18.06.1~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
                    docker-ce | 18.06.0~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages

                    ...


                使用第二列中的版本字符串安装特定版本,例如 5:18.09.1~3-0~ubuntu-xenial。

                    $ sudo apt-get install docker-ce=5:18.09.1~3-0~ubuntu-xenial docker-ce-cli=5:18.09.1~3-0~ubuntu-xenial containerd.io

 

            正常情况下安装完 Docker Engine-Community 之后,就可以运行 docker 命令,比如查看镜像列表,运行如下命令:


                $ sudo docker images

      REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

 

                注:将非 root 用户添加至 docker 用户组,非 root 用户可以不用 sudo 运行 docker 命令。可以运行如下命令:
                
                      # 将当前登陆的非 root 用户加入到 docker 用户组
                      $ sudo gpasswd -a $USER docker

                 # 更新 docker 用户组
                 $ newgrp docker


        (4) 卸载 Docker

            删除安装包:

                $ sudo apt-get purge docker-ce

            删除镜像、容器、配置文件等内容:

                $ sudo rm -rf /var/lib/docker

       (5) 升级 Docker

           安装运行一段时间后,可以运行如下命令更新 Docker 版本:

     $ sudo apt-get update

             $ sudo apt-get upgrade docker-ce docker-ce-cli

 

   3) macOS 10.13 下安装

        (1) 使用 Homebrew 安装

            Homebrew 的 Cask 支持 Docker for Mac,可以使用 Homebrew Cask 来进行安装,命令如下:

            $ brew install --cask --appdir=/Applications docker

                ==> Creating Caskroom at /usr/local/Caskroom
                ==> We'll set permissions properly so we won't need sudo in the future
                Password:          # 输入 macOS 密码
                ==> Satisfying dependencies
                ==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
                ######################################################################## 100.0%
                ==> Verifying checksum for Cask docker
                ==> Installing Cask docker
                ==> Moving App 'Docker.app' to '/Applications/Docker.app'.
                &#x1f37a;  docker was successfully installed!


            在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有有个小鲸鱼的图标()。

        (2) 手动下载安装

            点击以下链接下载 Install Docker Desktop on Mac:

                https://docs.docker.com/docker-for-mac/install/

            同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。

            从应用中找到 Docker 图标并点击运行。可能会询问 macOS 的登陆密码,输入即可。

 

3. Docker 镜像加速

    国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

        (1) 阿里云:https://<你的ID>.mirror.aliyuncs.com
        (2) 网易:https://hub-mirror.c.163.com/
        (3) 七牛云加速器:https://reg-mirror.qiniu.com 
        (4) 科大镜像:https://docker.mirrors.ustc.edu.cn/

    当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

    阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址。


    1) Ubuntu14.04、Debian7Wheezy

        对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址:

            DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

        重新启动服务:

            $ sudo service docker restart

    2) Ubuntu16.04+、Debian8+、CentOS7

        对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

            {"registry-mirrors":["https://hub-mirror.c.163.com/","https://reg-mirror.qiniu.com","https://docker.mirrors.ustc.edu.cn/"]}

        重新启动服务:

            $ sudo systemctl daemon-reload
            $ sudo systemctl restart docker

    3) macOS

        在任务栏点击 Docker for mac 应用图标 -> Perferences ... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。


    4) 检查加速器是否生效

        检查加速器是否生效配置加速器之后,可以手动检查加速器配置是否生效,运行如下命令:

            $ sudo docker info

                ...

                Registry Mirrors:
                    https://hub-mirror.c.163.com/
                    https://reg-mirror.qiniu.com/

 

4. Docker 资源

  1) Docker 官方

    Docker 主页: https://www.docker.com
    Docker 博客: https://blog.docker.com/
    Docker 文档: https://docs.docker.com/
    Docker Store: https://store.docker.com
    Docker Cloud: https://cloud.docker.com
    Docker Hub: https://hub.docker.com
    Docker 的源代码仓库: https://github.com/moby/moby
    Docker 发布版本历史: https://docs.docker.com/release-notes/
    Docker 常见问题: https://docs.docker.com/engine/faq/
    Docker 远端应用 API: https://docs.docker.com/develop/sdk/

  2) Docker 国内镜像

    官方镜像:https://registry.docker-cn.com
    网易镜像:http://hub-mirror.c.163.com
    中科大镜像:https://docker.mirrors.ustc.edu.cn
    阿里云镜像:https://help.aliyun.com/document_detail/60750.html(注册后使用)
    道客云镜像:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

 

posted @ 2022-07-06 14:13  垄山小站  阅读(480)  评论(0)    收藏  举报