Docker 安装与 Portainer 部署

真没想到docker安装起来这么麻烦

September 17, 2025 via CLOUDUH

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