Title
Abstract
1 安装 Docker Engine
Docker Desktop 和 Docker Engine 是不同的,服务器要安装 Engine。
运行一下代码,出错说明网络有问题,再重新配置一下网络。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
测试:
sudo docker --version
修改 Docker 源:
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
添加一下内容:
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.imgdb.de",
"https://docker-0.unsee.tech",
"https://docker.hlmirror.com",
"https://cjie.eu.org"
]
}
重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
测试 Docker,出现版本号和 Hello 即为成功安装
sudo docker --version
sudo docker run hello-world
2 Portainer 安装
Portainer 是一个用于简化 Docker 容器环境管理的轻量级、开源的 Web UI 工具。它提供了一个直观易用的图形界面,使用户能够通过浏览器来部署、监控和管理容器、镜像、卷和网络等 Docker 资源,无需学习复杂的命令行。
运行一下安装:
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts
运行以检查是否启动:
docker ps
访问连接进行管理和部署:
https://localhost:9443
https://192.168.1.83:9443
很狗屎的是,Portainer 默认密码长度为 12,你可以先设置一个长密码,在进入界面之后,选择进行修改。
3 部署仓库
创建一个 volume 供 docker 使用
其在虚拟机上的文件位置为:
cd /var/lib/docker/volumes
ls
cd /var/lib/docker/volumes/syncclipboard
搜索镜像,自己去 Docker Hub 搜索名字
CLI 片段如下:
docker run -d \
--name=syncclipboard-server \
-p 5033:5033 \
-v /path/to/appsettings.json:/app/appsettings.json \
--restart unless-stopped \
jericx/syncclipboard-server:latest
设置名称和镜像,以及对应端口
设置文件夹和文件映射
container: /app/appsettings.json
host: /var/lib/docker/volumes/syncclipboard/appsettings.json
设置环境变量
设置重启策略为自动重启
4 设置自动备份 volume
适用于所有虚拟机
安装 Rclone
sudo -v ; curl https://rclone.org/install.sh | sudo bash
配置 NAS 的 WebDAV 服务器
rclone config
- n/s/q> n [n) New remote]
- name> backup
- Storage> webdav
- url> https://xxx:pppp/docker [WebDAV 链接]
- vendor> [Enter]
- user> [WebDAV 账户]
- y/g/n> y
- password: [WebDAV 密码]
- bearer_token> [Enter]
- y/n> [Enter]
- y/e/d> y
- e/n/d/r/c/s/q> q
测试一下:
rclone lsd backup:
显示远程文件夹下的内容即算成功
设置备份路径
rclone copy /var/lib/docker/volumes backup:dockcloud
设置定时触发备份,设置一个定时器和一个同步脚本
cat >/etc/systemd/system/rclone-sync-dockcloud.timer <<'EOF'
[Unit]
Description=Periodic rclone sync for Docker volumes
[Timer]
OnBootSec=30
OnUnitActiveSec=30s
Unit=rclone-sync-dockcloud@poll.service
[Install]
WantedBy=timers.target
EOF
cat >/etc/systemd/system/rclone-sync-dockcloud@poll.service <<'EOF'
[Unit]
Description=Polling rclone sync for Docker volumes
[Service]
Type=oneshot
ExecStart=/usr/bin/flock -n /tmp/rclone-sync.lock \
rclone sync /var/lib/docker/volumes backup:dockcloud
EOF
开启应用
systemctl daemon-reload
systemctl start rclone-sync-dockcloud.timer
systemctl enable --now rclone-sync-dockcloud.timer
systemctl status rclone-sync-dockcloud.timer
systemctl status rclone-sync-dockcloud@poll.service