Docker玩转VPS服务器
DD一个纯净的系统(非必需)
腾讯云轻量服务器本身帮小白用户做了一些基础的防护工作(如默认禁止密码登陆、默认禁止root登陆等),其实没必要DD。 当然,也有不少有“洁癖”的小伙伴们,嫌弃系统上装有的监控软件,那么可以做以下的操作,给自己一个纯净的原生操作系统~
sudo -i #切换到root用户
sudo apt update -y #更新一下包脚本一
腾讯云轻量非大陆机器建议用这个:
wget --no-check-certificate -O AutoReinstall.sh https://git.io/AutoReinstall.sh && bash AutoReinstall.sh- CentOS默认密码Pwd@CentOS 其它系统Pwd@Linux
- OpenVZ / LXC 架构系统不适用
脚本二
这个有时候会失效:
以下命令默认是Debian10,自定义root密码和自定义ssh端口自己修改成你自己想要的。
bash <(wget --no-check-certificate -qO- 'https://raw.githubusercontent.com/MoeClub/Note/master/InstallNET.sh') -d 10 -v 64 -p "自定义root密码" -port "自定义ssh端口"等待15到30分钟左右,连接即可,也可以自己ping一下域名,看看通不通,然后尝试连接。
其他参数
-d 10 -v 64
-d 9 -v 64
-u 20.04 -v 64
-u 18.04 -v 64
重要提醒!!!
- 请仔细阅读服务器商家的ToS条款,事先确认你的服务器提供商是否支持你DD系统(重装自己的系统)
- 由于授权问题,很多服务器提供商是禁止你把服务器DD成Windows系统的(比如Contabo),发现会暂停服务甚至删鸡!
- OpenVZ / LXC 架构系统不适用此脚本
注意重装有风险,请妥善备份好自己的数据,(阿里腾讯搬瓦工等有快照的商家,你可以先在后台存一个快照)可能导致无法开机(部分商家可以用VNC救回来,但本文不涉及),谨慎操作!
1、BBR
新的 TCP 拥塞控制算法
BBR (Bottleneck Bandwidth and RTT)可以让服务器的带宽尽量跑满,并且尽量不要有排队的情况,让网络服务更佳稳定和高效。Linux Kernel 内核升级到
4.9及以上版本可以实现 BBR 加速(Ubuntu 18.04 默认的内核是4.15版本的内核,Ubuntu 20.04 默认的内核是5.4版本的内核,并已经默认编译了 TCP BBR 模块,可以直接通过参数开启)。目前 Debian 10 自带的内核版本一般是
4.19,我们可以查看一下内核版本(如果是5.6及以上内核则集成了 WireGuard )hostnamectl #或者 uname -r我们选择更新到新的稳定版本的
5.1内核(目前为止),再开启BBR。- 给 Debian 10 添加官方
backports源,获取更新的软件库
sudo nano /etc/apt/sources.list说明
本文以 Debian 10 为例,所以使用
/etc/apt/sources.list仍无问题,但如果你并不是根据本文从头开始,或者使用了其他 Linux 发行版,那么建议你建立/etc/apt/sources.list.d/文件夹,并在这个文件夹内建立自己的配置文件,形如/etc/apt/sources.list.d/vpsadmin.list,以此保证兼容性,也可避免默认文件在不可预见的情况下被覆盖而导致配置丢失。- 给 Debian 10 添加官方
- 然后把下面这一条加在最后,并保存退出。
deb http://deb.debian.org/debian buster-backports main- 刷新软件库并查询 Debian 官方的最新版内核并安装。请务必安装你的 VPS 对应的版本(本文以比较常见的【amd64】为例)。
sudo apt update && sudo apt -t buster-backports install linux-image-amd64注意
如果你的 VPS 支持,可以尝试【云服务器专用内核】
linux-image-cloud-amd64,优点就是精简、资源占用低,缺点嘛是有同学反馈不支持的系统强行安装会导致无法开机(Kernel 无法识别)。为了避免无法识别的悲剧,请确保:
- 尝试前做一个系统快照,或者
- 你有
vnc可以救场(并且你知道怎么用)
- 修改
kernel参数配置文件sysctl.conf并指定开启BBR
sudo nano /etc/sysctl.conf说明
本文以 Debian 10 为例,所以使用/etc/sysctl.conf仍无问题,但如果你并不是跟着本文从头开始,或者使用了其他 Linux 发行版,那么建议你建立/etc/sysctl.d/文件夹,并在这个文件夹内建立自己的配置文件,形如/etc/sysctl.d/vpsadmin.conf,以此保证兼容性,因为部分发行版在systemd207 版本之后便不再从/etc/sysctl.conf读取参数。使用自定义配置文件也可避免默认文件在不可预见的情况下被覆盖而导致配置丢失。
- 把下面的内容添加进去
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr- 重启 VPS、使内核更新和
BBR设置都生效
sudo reboot啰嗦君
因为我做展示的 VPS 支持云服务器专用内核,所以动图中我用了linux-image-cloud-amd64。如果你不确定你的 VPS 是否支持,那请务必按照第 3 步的命令,使用常规内核linux-image-amd64。
- 确认
BBR开启
如果你想确认 BBR 是否正确开启,可以使用下面的命令:
lsmod | grep bbr此时应该返回这样的结果:
tcp_bbr如果你想确认 fq 算法是否正确开启,可以使用下面的命令:
lsmod | grep fq此时应该返回这样的结果:
sch_fq
uname -r 内核版本已经变成了5.10
2、修改时间
首先,我们需要修改服务器的时间与我们本地的时间一致。
香港的服务器的话时间是一样的,就无所谓了,如果是欧美的服务器,可以通过下面的方式修改~
sudo -i #切换到root用户
apt update -y && apt upgrade -y #更新一下包先查看时间:
timedatectlDD完之后,可以看到我们的时间变成了纽约时间,这边需要改一下。
timedatectl list-timezones #列出所有时区sudo timedatectl set-timezone Asia/Shanghai #改成上海发现没有sudo命令,这是因为我们的系统现在是纯净的,没有装其他的东西,
这边我们手动安装几个常用的命令~
apt install sudo curl wget 然后重新运行
3、添加SWAP
swap是Linux中的虚拟内存,用于扩充物理内存不足而用来存储临时数据存在的。它类似于Windows中的虚拟内存。在Windows中,只可以使用文件来当作虚拟内存。而linux可以文件或者分区来当作虚拟内存。
这个虚拟内存对于内存小的VPS非常有必要,可以提高我们的运行效率。
这里我们用脚本来添加。
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh更多常用脚本,可以看这篇:整理一些常用的脚本(持续更新中)
这边建议是2倍,我添加了1倍,也就是1024MB
4、其他服务器安全相关的工作
其他安全防护工作,可以看这篇:保护好你的小鸡!保姆级服务器安全教程!
安全无小事,建议大家保护好自己的小鸡!
5、安装Docker、Docker-compose
更新、安装必备软件
apt-get update && apt-get install -y wget vim非大陆Docker安装
wget -qO- get.docker.com | bash注意:出现sudo: unable to resolve host [hostname],可以编辑nano /etc/hosts然后在
localhost后面空一格,再打上[hostname]你对应的hostname内容。
查看Docker版本
docker -v开机自动启动
systemctl enable docker卸载Docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd非大陆Docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version大陆内地的服务器安装请见这边:国内机安装docker
修改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 docker6、文件管理
强烈建议大家专门给Docker的数据、配置文件新建一个文件夹,
mkdir -p data/docker_data这样如果换服务器或者想要备份,都会很方便。
这边我们以之前搭建过的minimalist为例子【好玩的Docker项目】搭建一个简洁的记事本——minimalist-web-notepad
来简单讲讲。
首先进入我们创建好的文件夹下,
运行,
wget https://github.com/pereorga/minimalist-web-notepad/archive/refs/heads/docker.zip然后
没有unzip,我们就安装一个
apt install unzip再运行
unzip docker.zipcd minimalist-web-notepad-docker/建立镜像,
docker build -t minimalist-web-notepad .安装minimalist,
docker run -d -it --restart=always --name minimalist-web-notepad -v /root/data/docker_data/minimalist/minimalist-data:/var/www/html/_tmp -p 8006:80 minimalist-web-notepad注意这里的映射路径,我们改成了刚前面创建的路径/root/data/docker_data/minimalist
这样你的东西就都在这边啦。
一般来说,看到这一长串的东西,就说明创建成功啦。
由于Debian是本身开放所有端口的,所以直接访问即可,但是因为我们是腾讯云轻量服务器,后台默认还有一个防火墙,我们需要登陆把后台的防火墙里的8006端口打开(对应docker命令的8006:80),这样就能访问了。
当然你要是觉得麻烦,也可以直接填ALL,这样就开放所有端口了,以后就不用每次来设置了,但是不推荐。
然后我还非常推荐你再建立一个txt文件,记录这条docker命令。
nano config.txt然后输入前面的命令,
docker run -d -it --restart=always --name minimalist-web-notepad -v /root/data/docker_data/minimalist/minimalist-data:/var/www/html/_tmp -p 8006:80 minimalist-web-notepadCtrl+x退出,按y确认,回车。
用IP+端口就可以访问了!
问题来了,之前我们都是通过宝塔面板上面建立一个空壳站点,然后修改配置文件来进行反向代理的,这下没有了宝塔面板,要怎么搞?
难道要手动去修改nginx的配置文件吗?
我还得安装一个nginx?感觉好麻烦啊!
不!下期将介绍一个非常牛逼的工具,可以让你只要点击几下鼠标就能非常轻松完成反向代理,当然它自身也是基于Docker搭建的 ^ ^
所以暂时先憋着,丑就丑一点,我们下期视频来处理这个事情。
7、备份数据
参考这篇:
【有用的小知识】Docker容器如何更新?如何迁移应用?如何卸载?
原创文章作者:Roy,转载出处:https://iwanlab.com/hello-docker/


























