今天在着手准备把Wordpress迁移到Docker,发现国内按照Docker文档的方法下载Docker很慢,阿里云官方镜像站上的内容已经很老旧,有些与Docker最新文档不同的地方需要更新。于是借此机会介绍如何使用阿里云官方镜像站在Ubuntu上用apt安装Docker Engine。

安装Docker

使用apt安装Docker

参考该页面,我们可以看到使用apt安装的大致步骤是 安装依赖-安装GPG证书-写入软件源-安装Docker。在这里,写入软件源的方法与Docker文档有一定出入。本人将其改成了Docker文档中的写法,避免source.list文件过于混乱,兼容性也更强:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

气死了,阿里源太慢了,删除/etc/apt/sources.list.d/docker.list后运行以下代码换用中科大源,也可以直接运行使用中科大源:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

建立Docker用户

Ubuntu在安装好后已经建立docker用户组,使用cat /etc/group | grep docker查看。如果需要使非root用户能够使用docker,参考文档把用户加入docker用户组。

systemctl常用命令

启动Docker服务:

systemctl start docker

查看Docker服务状态:

systemctl status docker

停止Docker服务:

systemctl stop docker

重启Docker服务:

systemctl restart docker

注意,wsl不使用systemd,需要使用service命令。

启动Docker服务:

service docker start

查看Docker服务状态:

service docker status

停止Docker服务:

service docker stop

重启Docker服务:

service docker restart

卸载Docker

参考官方文档,如果出现了问题,需要卸载Docker,可以运行:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

使用Portainer可视化管理Docker

Portainer 官网 文档

Portainer可以可视化管理Docker,它本身也是一个Docker容器,只需给它传入Docker Unix套接字即可以网页UI的形式管理Docker。

根据文档,首先创建一个数据宗卷:

docker volume create portainer_data

然后,运行Portainer容器即可:

docker run -d -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

如果是虚拟机/WSL安装,这时访问9443端口应当可以看到页面。如果在服务器安装,还需要配置反向代理。反向代理的配置无需多言,需要注意的是Portainer仅支持https访问,在代理https://127.0.0.1:9443之后还需要设置SSL证书。

Failure: Unable to retrieve templates问题

由于Portainer会经常获取https://raw.githubusercontent.com/portainer/templates/master/templates-2.0.json的内容来拉取快速建立容器的模板,所以国内经常出现Failure: Unable to retrieve templates的问题。我在网站中保存了一份该文件,在 设置 - App Templates - URL 中填入该链接即可:

https://cdn.ipangbo.cn/js/templates.json