Ubuntu 上安装 Docker

::: tip 说明
以下 CentOS 的版本是 8 。另外,以下命令默认以 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 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 从中下载镜像速度会很感人,因此,我们需要配置国内的镜像网址,从国内现在镜像文件。

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

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

sudo vi /etc/docker/daemon.json 

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

输入如下内容:

{
  "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 <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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 以下命令默认以 root 进行操作。另外,开发环境中,简单起见,记得关闭 Linux 防火墙#命令查看状态sudo...
    hemiao3000阅读 660评论 0 0
  • 1. Ubuntu获取社区版docker(Docker CE,企业版Docker EE) 安装Docker之前, ...
    邓建源阅读 429评论 0 0
  • 学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】基础设施即服务-Docker-安装 准备工作 ...
    撸帝阅读 771评论 0 4
  • 前提 使用的 Ubuntu版本是 Ubuntu 18.04 使用 sudo lsb_release -a 查看 U...
    tingshuo123阅读 441评论 0 0
  • docker官网文档Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版...
    爱的旋转体阅读 1,020评论 0 0

友情链接更多精彩内容