Ubuntu 上安装 Docker

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

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

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

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

前期准备工作

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

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

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

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

  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
    

    这一步操作是为下一步操作作准备工作。

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

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

    这一步操作是为下一步操作作准备工作。

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

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

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

    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= \
  docker-ce-cli= \
  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 用户(属于 docker 用户组)身份运行的,因此你去执行 docker 命令时,你的身份(和权限)是不符合的。

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

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

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

解决办法有 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 

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

输入如下内容:

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

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

重新启动 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 : -o .tar

例如:

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

导入 image 使用命令:

docker load -i .tar

例如:

docker load -i mysql-8.0.16.tar

你可能感兴趣的:(Ubuntu 上安装 Docker)