Ubuntu 上安装 Docker

以下命令默认以 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • 1. Ubuntu获取社区版docker(Docker CE,企业版Docker EE) 安装Docker之前, ...
    邓建源阅读 276评论 0 0
  • 学习完整课程请移步 互联网 Java 全栈工程师 本节视频 【视频】基础设施即服务-Docker-安装 准备工作 ...
    撸帝阅读 703评论 0 4
  • 前提 使用的 Ubuntu版本是 Ubuntu 18.04 使用 sudo lsb_release -a 查看 U...
    tingshuo123阅读 372评论 0 0
  • docker官网文档Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版...
    爱的旋转体阅读 938评论 0 0
  • docker安装: 第一种方式: 操作系统默认的apt源有docker包,我们可以直接使用下面的apt-get命令...
    R_X阅读 2,941评论 0 1