Ubuntu 上安装 Docker

2021-12-21  本文已影响0人  hemiao3000

以下命令默认以 root 进行操作。

另外,开发环境中,简单起见,记得关闭 Linux 防火墙

# 命令
查看状态 sudo ufw status
开启并开机启动 sudo ufw enable
关闭 sudo ufw disable

Ubuntu 的防火墙默认是关闭的。

前期准备工作

Ubuntu 的默认的 apt 软件源中实际上有 docker 的安装包,理论上来说,你直接利用默认软件源中的 docker 安装包进行安装也是可行的。

但是 docker 官方考虑到不同的用户对 docker 的不同版本有不同的需求<small>(有人追求最新,有人追求稳定)</small>,他们专门提供了一个仓库用以提供多个版本的 docker 的下载。

另外,通常 apt 默认软件源中的软件的版本并不一定是最新版。

因此,我们必须『告知』apt 有这样一个仓库的存在,并且未来要求 apt 从这个仓库中下载我们指定版本的 docker 。<small>而非默认的仓库。</small>

  1. 查看内核版本

    Docker 官方要求 Linux 内核版本至少 3.8 以上,建议 3.10 以上。Ubuntu 18.04 的内核是符合其要求的。

    通过以下命令可查看内核版本:

    uname -r
    
  2. 卸载旧版本

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

    sudo apt remove \
            docker \
            docker-engine \
            docker-ce \
            docker.io
    
  3. 为配置 docker 软件源作准备

    sudo apt install \
            apt-transport-https \
            ca-certificates \
            curl \
            software-properties-common
    

    <small>这一步操作是为下一步操作作准备工作。</small>

  4. 为 apt 将要添加的 docker 软件源添加校验

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    <small>这一步操作是为下一步操作作准备工作。</small>

  5. 为 apt 添加 docker 官方软件源

    sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    

    这步操作的最直观的效果就是:你的 /etc/apt/sources.list 文件中会『多出来一行』<small>(一个远程仓库的网址)</small>

    sudo sed -i     's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/apt/sources.list
    

    记得执行以此 sudo apt update,去更新『软件清单』。

  1. 验证仓库是否添加成功:查看所有仓库中所有 docker 版本

    apt-cache madison docker-ce
    

安装 docker 并验证

从网络仓库中下载,安装

sudo apt install \
  docker-ce \
  docker-ce-cli \
  containerd.io

在没有指定版本的情况下,apt 下载的是软件源中的最新版。如果想要指定特定版本,则使用如下语法:

sudo apt install \
  docker-ce=<VERSION_STRING> \
  docker-ce-cli=<VERSION_STRING> \
  containerd.io

带入特定版本号,例如:5:19.03.13~3-0~ubuntu-bionic

启动 Docker

类似于 MySQL,Docker 也是基于 CS 架构的。你的 Ubuntu 上存在一个 Docker 服务端和一个 Docker 客户端。

要使用 Docker 的前提是:确保 Docker 的服务端启动了。

 启动 docker 服务端
sudo systemctl start docker

 将 docker 服务端设置为开机启动
sudo systemctl enable docker

验证安装是否成功

Docker 是 CS 架构的,docker 的服务端是以 docker 用户<small>(属于 docker 用户组)</small>身份运行的,因此你去执行 docker 命令时,你的身份<small>(和权限)</small>是不符合的。

当你通过 docker version 命令去验证安装是否成功时,会出现如下信息:

Got permission denied while trying to connect to the Docker daemon socket ...... connect: permission denied

<small>有 client 和 server 两部分表示 docker 安装启动都成功了。</small>

解决办法有 2 个:

  1. 你所执行的所有的 docker 命令前面都加上 sudo 。将你的身份临时提升为 root,root 自然是有权限执行 docker 命令的。

    sudo docker version
    
  2. 将你自己添加到 docker 用户组中。你和 docker 用户所属同一个用户组,你的自然就有权限执行 docker 命令。

    # 创建名为 docker 的用户组。
    # 正常情况下,这条命令的结果会告诉你 docker 用户组已存在。
    sudo groupadd docker 
    
    # 将当前用户(即你所登录系统的账号)添加至 docker 用户组
    sudo gpasswd -a $USER docker 
    
    # 更新 docker 用户组
    newgrp docker 
    

验证连接 docker hub 中央镜像仓库

输入 docker search -f is-official=true mysql 命令,会出现类似如下结果:

NAME     DESCRIPTION                                     STARS  OFFICIAL ...
mysql    MySQL is a widely used, open-source relation…   8819   [OK]     ...
mariadb  MariaDB is a community-developed fork of MyS…   3102   [OK]     ...
percona  Percona Server is a fork of the MySQL relati…   459    [OK]     ...

配置国内镜像

由于 docker hub 的中央镜像仓库在国外,因此有时我们连接 docker hub 从中下载镜像速度会很感人,因此,我们需要配置国内的镜像网址,从国内现在镜像文件。

:::tip
国内的镜像本质上就是 docker hub 中央仓库在国内的一份缓存/备份。
:::

通过 vi 命令编辑相关配置文件:

sudo vi /etc/docker/daemon.json 

如果该文件存在,则将其内容清除;如果文件不存在,<small>(打开该文件后,其内容是空白的),</small>编辑结束后保存退出,即创建。

输入如下内容:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

<small>该配置文件配置了两个镜像,一个是 docker 官方在中国境内的官方镜像,一个是中科大维护的一个镜像。</small>

重新启动 docker 服务:

sudo systemctl restart docker

查看修改结果:

docker info

会有如下内容:

...
Registry Mirrors:
 https://registry.docker-cn.com/
 https://docker.mirrors.ustc.edu.cn/
...

导入已有的镜像文件

考虑到有些场景下的联网的不方便,docker 提供了将已下载的 images 打包导出,再在别处导入的功能。

导出已有 image 使用命令:

docker save <repository>:<tag> -o <repository>.tar

例如:

docker save mysql:8.0.16 -o mysql-8.0.16.tar

导入 image 使用命令:

docker load -i <repository>.tar

例如:

docker load -i mysql-8.0.16.tar
上一篇下一篇

猜你喜欢

热点阅读