Docker 入门指南:如何在 Ubuntu 上安装和使用 Docker

官方 Ubuntu 存储库中提供的 Docker 安装软件包可能不是最新版本。

Ubuntu 官方的版本库中并不一定是 Docker 最新的安装包,为了保证是最新版,我们从 Docker 官方库来安装。

首先,更新现有的软件包列表:

$ <span class="token function">sudo</span> <span class="token function">apt</span> update
$ <span class="token function">sudo</span> <span class="token function">apt</span> update 
$ sudo apt update

注意:如果无法更新,可能是你的软件源指向是国外的服务器,很可能已经被墙。所有首次更新请打开 VPN。

接下来,安装一些必备软件包,让 apt 通过 HTTPS 使用软件包。

<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> apt-transport-https ca-certificates <span class="token function">curl</span> software-properties-common
<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> apt-transport-https ca-certificates <span class="token function">curl</span> software-properties-common 
sudo apt install apt-transport-https ca-certificates curl software-properties-common

然后将官方 Docker 版本库的 GPG 密钥添加到系统中:

<span class="token function">curl</span> -fsSL https://download.docker.com/linux/ubuntu/gpg <span class="token operator">|</span> <span class="token function">sudo</span> apt-key <span class="token function">add</span> -
<span class="token function">curl</span> -fsSL https://download.docker.com/linux/ubuntu/gpg <span class="token operator">|</span> <span class="token function">sudo</span> apt-key <span class="token function">add</span> - 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

执行后显示

ok
ok 
ok

将 Docker 版本库添加到APT源:

<span class="token function">sudo</span> add-apt-repository <span class="token string">"deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"</span>
<span class="token function">sudo</span> add-apt-repository <span class="token string">"deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"</span> 
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

接下来,我们用新添加的 Docker 软件包来进行升级更新。

<span class="token function">sudo</span> <span class="token function">apt</span> update
<span class="token function">sudo</span> <span class="token function">apt</span> update 
sudo apt update

确保要从 Docker 版本库,而不是默认的 Ubuntu 版本库进行安装:

<span class="token function">apt-cache</span> policy docker-ce
<span class="token function">apt-cache</span> policy docker-ce 
apt-cache policy docker-ce

执行后会看到这样的结果( Docker 的版本号可能略有不同)

docker-ce: Installed: <span class="token punctuation">(</span>none<span class="token punctuation">)</span> Candidate: <span class="token number">5</span>:19.03.12~3-0~ubuntu-focal Version table: <span class="token number">5</span>:19.03.12~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages <span class="token number">5</span>:19.03.11~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages <span class="token number">5</span>:19.03.10~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages <span class="token number">5</span>:19.03.9~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages
docker-ce: Installed: <span class="token punctuation">(</span>none<span class="token punctuation">)</span> Candidate: <span class="token number">5</span>:19.03.12~3-0~ubuntu-focal Version table: <span class="token number">5</span>:19.03.12~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages <span class="token number">5</span>:19.03.11~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages <span class="token number">5</span>:19.03.10~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages <span class="token number">5</span>:19.03.9~3-0~ubuntu-focal <span class="token number">500</span> <span class="token number">500</span> https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 
docker-ce: Installed: (none) Candidate: 5:19.03.12~3-0~ubuntu-focal Version table: 5:19.03.12~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 5:19.03.11~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 5:19.03.10~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 5:19.03.9~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages

请注意,到目前这一步docker-ce还未安装,但根据上一步中的列表,可以看到 docker-ce 来自 Docker 官方版本库。

最后,安装 Docker :

<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> docker-ce
<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> docker-ce 
sudo apt install docker-ce

现在 Docker 已经安装完毕。我们启动守护程序。检查 Docker 是否正在运行:

<span class="token function">sudo</span> systemctl status <span class="token function">docker</span>
<span class="token function">sudo</span> systemctl status <span class="token function">docker</span> 
sudo systemctl status docker

执行结果类似以下内容,说明该服务处于活动状态并且正在运行:

● docker.service - Docker Application Container Engine Loaded: loaded <span class="token punctuation">(</span>/lib/systemd/system/docker.service<span class="token punctuation">;</span> enabled<span class="token punctuation">;</span> vendor preset: enabled<span class="token punctuation">)</span> Active: active <span class="token punctuation">(</span>running<span class="token punctuation">)</span> since Sat <span class="token number">2020</span>-07-08 02:55:20 UTC<span class="token punctuation">;</span> 5min ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: <span class="token number">4287</span> <span class="token punctuation">(</span>dockerd<span class="token punctuation">)</span> Tasks: <span class="token number">8</span> Memory: <span class="token number">36</span>.4M CGroup: /system.slice/docker.service └─4287 /usr/bin/dockerd -H fd:// --containerd<span class="token operator">=</span>/run/containerd/containerd.sock
● docker.service - Docker Application Container Engine Loaded: loaded <span class="token punctuation">(</span>/lib/systemd/system/docker.service<span class="token punctuation">;</span> enabled<span class="token punctuation">;</span> vendor preset: enabled<span class="token punctuation">)</span> Active: active <span class="token punctuation">(</span>running<span class="token punctuation">)</span> since Sat <span class="token number">2020</span>-07-08 02:55:20 UTC<span class="token punctuation">;</span> 5min ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: <span class="token number">4287</span> <span class="token punctuation">(</span>dockerd<span class="token punctuation">)</span> Tasks: <span class="token number">8</span> Memory: <span class="token number">36</span>.4M CGroup: /system.slice/docker.service └─4287 /usr/bin/dockerd -H fd:// --containerd<span class="token operator">=</span>/run/containerd/containerd.sock 
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-08 02:55:20 UTC; 5min ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 4287 (dockerd) Tasks: 8 Memory: 36.4M CGroup: /system.slice/docker.service └─4287 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

安装完成之后需要进行一些配置,包括 切换docker下载源为国内镜像站 以及 修改cgroups。

这个cgroups是啥呢,你可以把它理解成一个进程隔离工具,docker就是用它来实现容器的隔离的。docker 默认使用的是cgroupfs,而 k8s 也用到了一个进程隔离工具systemd,如果使用两个隔离组的话可能会引起异常,所以我们要把 docker 的也改成systemd。

这两者都是在/etc/docker/daemon.json里修改的,所以我们一起配置了就好了,首先执行下述命令编辑daemon.json:

<span class="token function">sudo</span> <span class="token function">vi</span> /etc/docker/daemon.json
<span class="token function">sudo</span> <span class="token function">vi</span> /etc/docker/daemon.json 
sudo vi /etc/docker/daemon.json

打开后输入以下内容:

<span class="token punctuation">{<!-- --></span> <span class="token string">"registry-mirrors"</span><span class="token builtin class-name">:</span> <span class="token punctuation">[</span> <span class="token string">"https://dockerhub.azk8s.cn"</span>, <span class="token string">"https://reg-mirror.qiniu.com"</span>, <span class="token string">"https://quay-mirror.qiniu.com"</span> <span class="token punctuation">]</span>, <span class="token string">"exec-opts"</span><span class="token builtin class-name">:</span> <span class="token punctuation">[</span> <span class="token string">"native.cgroupdriver=systemd"</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span>
<span class="token punctuation">{<!-- --></span> <span class="token string">"registry-mirrors"</span><span class="token builtin class-name">:</span> <span class="token punctuation">[</span> <span class="token string">"https://dockerhub.azk8s.cn"</span>, <span class="token string">"https://reg-mirror.qiniu.com"</span>, <span class="token string">"https://quay-mirror.qiniu.com"</span> <span class="token punctuation">]</span>, <span class="token string">"exec-opts"</span><span class="token builtin class-name">:</span> <span class="token punctuation">[</span> <span class="token string">"native.cgroupdriver=systemd"</span> <span class="token punctuation">]</span> <span class="token punctuation">}</span> 
{ "registry-mirrors": [ "https://dockerhub.azk8s.cn", "https://reg-mirror.qiniu.com", "https://quay-mirror.qiniu.com" ], "exec-opts": [ "native.cgroupdriver=systemd" ] }

然后:wq保存后重启 docker:

<span class="token function">sudo</span> systemctl daemon-reload <span class="token function">sudo</span> systemctl restart <span class="token function">docker</span>
<span class="token function">sudo</span> systemctl daemon-reload <span class="token function">sudo</span> systemctl restart <span class="token function">docker</span> 
sudo systemctl daemon-reload sudo systemctl restart docker

然后就可以通过docker info | grep Cgroup来查看修改后的 docker cgroup 状态,发现变为systemd即为修改成功。

安装完了 docker 就可以下载 k8s 的三个主要组件kubelet、kubeadm以及kubectl了。这一步两台主机都需要进行安装。先来简单介绍一下这三者:

kubelet: k8s 的核心服务
kubeadm: 这个是用于快速安装 k8s 的一个集成工具,我们在master1和worker1上的 k8s 部署都将使用它来完成。
kubectl: k8s 的命令行工具,部署完成之后后续的操作都要用它来执行
其实这三个的下载很简单,直接用apt-get就好了,但是因为某些原因,它们的下载地址不存在了。所以我们需要用国内的镜像站来下载,也很简单,依次执行下面五条命令即可:
使得 apt 支持 ssl 传输

<span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token function">apt-get</span> <span class="token function">install</span> -y apt-transport-https
<span class="token function">apt-get</span> update <span class="token operator">&&</span> <span class="token function">apt-get</span> <span class="token function">install</span> -y apt-transport-https 
apt-get update && apt-get install -y apt-transport-https

下载 gpg 密钥

<span class="token function">curl</span> https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg <span class="token operator">|</span> apt-key <span class="token function">add</span> -
<span class="token function">curl</span> https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg <span class="token operator">|</span> apt-key <span class="token function">add</span> - 
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

添加 k8s 镜像源

<span class="token function">cat</span> <span class="token operator"><<</span><span class="token string">EOF<span class="token bash punctuation"> <span class="token operator">></span>/etc/apt/sources.list.d/kubernetes.list</span> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF</span>
<span class="token function">cat</span> <span class="token operator"><<</span><span class="token string">EOF<span class="token bash punctuation"> <span class="token operator">></span>/etc/apt/sources.list.d/kubernetes.list</span> deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF</span> 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF

更新源列表

<span class="token function">apt-get</span> update
<span class="token function">apt-get</span> update 
apt-get update

下载 kubectl,kubeadm以及 kubelet

<span class="token function">apt-get</span> <span class="token function">install</span> -y kubelet kubeadm kubectl
<span class="token function">apt-get</span> <span class="token function">install</span> -y kubelet kubeadm kubectl 
apt-get install -y kubelet kubeadm kubectl

原文链接:https://blog.csdn.net/qq_34567537/article/details/127551257

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享