Docker安装简明教程(Ubuntu)

Docker是一个开源的容器化平台,可以方便开发者和运维人员快速地构建、部署和运行应用程序。相比起虚拟机,Docker更加轻量级,启动速度更快,资源占用更少。相比起裸机,Docker更加灵活,将应用程序及其所有依赖打包在一个独立的环境中,这样应用可以在任何环境下运行。本文将介绍如何在Ubuntu系统上安装Docker。

1. 更新软件包

首先,更新软件包列表,确保安装的软件包是最新的:

1
2
sudo apt update
sudo apt upgrade

同时可以安装一些后续需要使用的工具:

1
sudo apt install curl vim

2. 添加Docker的GPG密钥

Docker的软件包是通过GPG(GNU Privacy Guard)密钥签名的,这样可以确保安装的软件是由 Docker 官方发布的,而不是被第三方篡改或伪造的。但由于这片大地的网络环境问题,Docker官方服务器是无法访问的,所以我们需要使用国内的镜像源,此处使用阿里云的镜像源:

1
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

3. 添加Docker的APT源

接下来,添加Docker的APT源,同样使用阿里云的镜像源:

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

4. 安装Docker

更新软件包列表,然后安装Docker:

1
2
sudo apt update
sudo apt-get install docker-ce

5. 配置 Docker 使用国内镜像加速器

Docker Hub的镜像在国内无法访问,所以我们需要配置 Docker 使用国内的镜像加速器。

Docker镜像加速器下架

但由于一些监管原因,国内的镜像加速器基本都已经下架,下表是笔者整理的一些镜像加速器的状态:

镜像加速器 镜像加速器地址 专属加速器 其它加速
Docker 中国官方镜像 https://registry.docker-cn.com Docker Hub已关闭
DaoCloud 镜像站 https://docker.m.daocloud.io 白名单模式 Docker Hub、GCR、K8S、GHCR、Quay、NVCR 等
Azure 中国镜像 https://dockerhub.azk8s.cn 仅供内部访问 Docker Hub、GCR、Quay
科大镜像站 https://docker.mirrors.ustc.edu.cn 仅供内部访问 Docker HubGCRQuay
阿里云 https://<your_code>.mirror.aliyuncs.com 需登录,系统分配 Docker Hub
七牛云 https://reg-mirror.qiniu.com Docker Hub、GCR、Quay
网易云 https://hub-mirror.c.163.com Docker Hub
腾讯云 https://mirror.ccs.tencentyun.com 仅供内部访问 Docker Hub
Docker 镜像代理 https://dockerproxy.com Docker Hub、GCR、K8S、GHCR
百度云 https://mirror.baidubce.com Docker Hub
南京大学镜像站 https://docker.nju.edu.cn Docker Hub、GCR、GHCR、Quay、NVCR 等
上海交大镜像站 https://docker.mirrors.sjtug.sjtu.edu.cn Docker Hub、GCR 等已关闭
中科院软件所镜像站 https://mirror.iscas.ac.cn Docker Hub

可以看到对于Docker Hub的镜像加速器都已经下架,这里挖个坑,之后写一个帖子来搭建一个私有的Docker镜像加速器。

所以,这里只能让Docker经过代理,拉取Docker Hub的镜像。先要删除之前配置的国内镜像源,配置 docker 官方镜像链接。这里直接粘贴进去即可。

1
sudo vim /etc/docker/daemon.json
1
2
3
{
"registry-mirrors": ["https://hub.docker.com/"]
}

“docker pull”命令是由 dockerd 守护进程执行。而 dockerd 守护进程是由 systemd 管理。因此,如果需要在执行 “docker pull” 命令时使用 HTTP/HTTPS 代理,需要通过 systemd 配置。

为dockerd创建配置文件夹:

1
sudo mkdir -p /etc/systemd/system/docker.service.d

为 dockerd 创建 HTTP/HTTPS 网络代理的配置文件:

1
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

添加以下内容(根据自己的代理地址修改):

1
2
3
4
[Service]
Environment="HTTP_PROXY=http://<proxy_ip>:<proxy_port>/"
Environment="HTTPS_PROXY=http://<proxy_ip>:<proxy_port>/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

然后重启Docker服务:

1
2
sudo systemctl daemon-reload
sudo systemctl restart docker

6. 运行Docker测试

最后,运行一个简单的Docker容器测试是否安装成功:

1
sudo docker run hello-world