本文将指导如何在 Debian 11 和 Ubuntu 22.04 下安装 Docker 以及 Docker Compose。

PS:本文同时适用于 Debian 10 Buster 以及 Ubuntu 20.04 Focal

什么是 Docker?
Docker 是一种容器化技术,可以在服务器上快速搭建容器并在不污染宿主机的情况下运行软件,而不再需要安装配置各种环境。开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。

什么是 Docker Compose?
传统模式下运维人员需要运行 docker run 来启动各种容器,一旦容器过多,就无法一次性记住所有的运行参数和命令,这时候我们可以使用 Docker Compose 来解决这个问题。

Docker Compose 是一种工具,用于帮助定义和共享多容器应用程序。 通过 Compose,你可以创建 YAML 文件来定义服务,并且只需一个命令,就可以启动或清理所有内容。使用 Compose 的巨大优点是,你可以在文件中定义应用程序堆栈,使其位于项目存储库的根目录下(它现在受版本控制),并方便其他人参与你的项目。 其他人只需克隆你的存储库即可开始撰写应用。 事实上,你可能会看到 GitHub/GitLab 上的很多项目现在都是这样做的。(via 使用 Docker Compose)

使用官方源安装 Docker
以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。

首先,安装一些必要的软件包:

apt update
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
然后加入 Docker 的 GPG 公钥和 apt 源:

Debian
Ubuntu

curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
国内机器可以用清华 TUNA的国内源:

Debian
Ubuntu

curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
然后更新系统后即可安装 Docker CE:

apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
此时可以使用 docker version 命令检查是否安装成功:

root@debian ~ # docker version
Client: Docker Engine - Community
Version: 20.10.22
API version: 1.41
Go version: go1.18.9
Git commit: 3a2c30b
Built: Thu Dec 15 22:28:22 2022
OS/Arch: linux/amd64
Context: default
Experimental: true

Server: Docker Engine - Community
Engine:
Version: 20.10.22
API version: 1.41 (minimum version 1.12)
Go version: go1.18.9
Git commit: 42c8b31
Built: Thu Dec 15 22:26:14 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.14
GitCommit: 9ba4b250366a5ddde94bb7c9d1def331423aa323
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
如果需要某个特定用户可以用 Docker rootless 模式运行 Docker,那么可以把这个用户也加入 docker 组,比如我们把 www-data 用户加进去:

apt install docker-ce-rootless-extras
sudo usermod -aG docker www-data
安装 Docker Compose
因为我们已经安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose:

root@debian ~ # docker compose version
Docker Compose version v2.14.1
如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose:

我们可以使用 Docker 官方发布的 Github 直接安装最新版本:

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
此时可以使用 docker-compose version 命令检查是否安装成功:

root@debian ~ # docker-compose version
Docker Compose version v2.14.2
修改 Docker 配置
以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘(泪的教训):

cat > /etc/docker/daemon.json << EOF
{

"log-driver": "json-file",
"log-opts": {
    "max-size": "20m",
    "max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true

}
EOF
然后重启 Docker 服务:

systemctl restart docker
好了,我们已经安装好了 Docker 和 Docker Compose,然后就可以开始愉快的安装各种软件,限于篇幅,我们不再赘述,今后慢慢介绍安装各种 Docker 软件的方法。

如果出现无法打开GitHub网页/网站的情况,以采用以下方法解决。不管是使用Linux还是Windows操作系统,都得修改hosts文件(不同的操作系统其文件位置不一样),然后增加GitHub的IP地址和网址。

问题

访问GitHub网站出现的错误

注:其实访问Google、Twitter、Youtube也是超时错误的,通常超时情况一般都是网络原因。

通常的解决方法

第一步:打开ip138或IP/Dns查询工具,查询github.com和raw.githubusercontent.com的IP地址。请记录下检测列表里的TTL值最小的IP。

第二步:在Linux系统下用超级用户的身份打开/etc/hosts文件,将IP地址和网址按格式写入文件内。

第三步:保存文件,重启浏览器或电脑。

附1:hosts文件的路径

如果是Windows系统,多数在C:\Windows\System32\drivers\etc\目录中。

如果是Linux系统,包括Android、Mac、iPhone和大多数UNIX,则都在/etc/目录中,如Deepin 20系统的在/etc/hosts(参考:Deepin V20系统的初始默认/etc/hosts文件内容)。

附2:改hosts文件,在最下方增加以下代码

注意说明:已经亲测可用,能正常访问GitHub网页,但仅做参考,不保证长期有效。

GitHub Start

140.82.114.4 github.com

140.82.113.4 gist.github.com

185.199.108.153 assets-cdn.github.com

199.232.96.133 raw.githubusercontent.com

199.232.96.133 gist.githubusercontent.com

199.232.96.133 cloud.githubusercontent.com

199.232.96.133 camo.githubusercontent.com

199.232.96.133 avatars.githubusercontent.com

199.232.96.133 avatars0.githubusercontent.com

199.232.96.133 avatars1.githubusercontent.com

199.232.96.133 avatars2.githubusercontent.com

199.232.96.133 avatars3.githubusercontent.com

199.232.96.133 avatars4.githubusercontent.com

199.232.96.133 avatars5.githubusercontent.com

199.232.96.133 avatars6.githubusercontent.com

199.232.96.133 avatars7.githubusercontent.com

199.232.96.133 avatars8.githubusercontent.com

GitHub End

结语

通常访问不了GitHub网页跟Windows或Linux操作系统和浏览器无关,而是网络问题,一般GitHub是大的网站,服务器通常是没有问题的,我们只需要修改hosts文件并增加相应的IP和网址即可。

修改配置
1.先选择从浏览器打开ssh连接服务器
连接登录成功后,输入以下命令

sudo -i #切换到root
passwd #修改密码
然后会要求输入新密码,然后再重复一次密码,输入密码的时候不会显示出来,所以直接输入密码,然后回车,再然后重复输入密码回车。

修改root密码完成

2.接着修改SSH配置文件/etc/ssh/sshd_config

vi /etc/ssh/sshd_config #编辑文件
找到以下内容并修改

PermitRootLogin yes //默认为no,需要开启root用户访问改为yes
PasswordAuthentication yes //默认为no,改为yes开启密码登陆
修改完成后,再下按 esc 键,然后再输入

:wq #保存并退出
3.最后重启下服务器即可

reboot #重启服务器

更新说明:更新v5.1.13版本主控

cdnfly自建云端搭建方法:

用以下源码搭建一个站点,绑定域名auth.cdnfly.cn、monitor.cdnfly.cn,注意需要配置伪静态:
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-10b3891b-be67-4103-a60f-9da1d057470c/b46c7891-1c1a-486e-96f5-a47daa1f8535.zip

cdnfly主控安装方法:

修改hosts,将 auth.cdnfly.cn、monitor.cdnfly.cn 这2个域名指向刚才的自建云端服务器IP

执行以下命令安装主控:
curl http://auth.cdnfly.cn/master.sh -o master.sh && chmod +x master.sh && ./master.sh --es-dir /home/es
复制代码

已安装过官方版的破解方法:

修改hosts,将 auth.cdnfly.cn、monitor.cdnfly.cn 这2个域名指向刚才的自建云端服务器IP

执行以下命令完成破解:
wget http://auth.cdnfly.cn/cdnfly/api.py -O /opt/venv/lib/python2.7/site-packages/requests/api.py
supervisorctl -c /opt/cdnfly/master/conf/supervisord.conf reload
复制代码

云端节点监控功能说明:

监控默认是使用云端服务器去请求CDN节点,因此要保持云端和CDN节点之间的网络畅通。另外如果是用宝塔面板,php不要安装bt_safe扩展,否则无法使用tcp类型监控;如果要用ping类型监控,还需要允许exec函数。
支持多节点监控(和官方一样),要添加其它监控节点,可以编辑config.php配置文件,根据里面的注释说明添加。

Azure 里的 linux 模板应该是通过了 sshd_config 文件禁用了 Root 登陆,我们只需重新开启即可。

sudo su
vim /etc/ssh/sshd_config

# 在 sshd_config 文件里的 “Authentication” 部分加上以下内容
PermitRootLogin yes
# 完成以后退出 vim 并保存

service sshd restart # 重启 ssh 服务以应用更改
passwd root # 直接修改 Root 用户的密码

这样重新登陆 ssh 就可以用 Root 登陆了。