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 \
                        http://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

            通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community。

                $ sudo docker run hello-world

 

    非 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"

        (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

            通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community。

                $ sudo docker run hello-world

        (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  垄山小站  阅读(300)  评论(0编辑  收藏  举报