安装应用
推荐的做法是使用 编排/堆栈。
- 写好 Docker Compose 文件
- 打开 Potainer > 堆栈 > 添加堆栈
- 起个名称,粘贴Docker Compose 内容到其中。
- "部署堆栈"
Docker Compose:是一种语法。 包含一套信息,设定了要安装的应用、应用的环境、对应用的管理方式。
yml
# Docker Compose 示例
name: alist
services:
alist:
image: "xhofe/alist:latest"
container_name: alist
network_mode: "host"
volumes:
- "/app/alist/:/opt/alist/data"
# ports:
# - "5244:5244"
# environment:
# - PUID=0
# - PGID=0
# - UMASK=022
restart: unless-stopped命令行法
创建一个项目的目录,将编排的内容写入 docker-compose.yml。
shell
mkdir app_name && cd app_name
echo "# 编排的内容
name: alist
services:
alist:
image: "xhofe/alist:latest"
" >> ./docker-compose.yml
docker compose up -d # 启动堆栈。 -d:在后台运行。更新应用

- Potainer > 堆栈 > 某个堆栈 > 编辑器 > 更新堆栈
- 选择"重新拉取镜像并重新部署",点击“更新”
之后,Docker 应该会下载最新的版本,安装,运行。
如果应用没有破坏性更新,更新就完成了。如果应用有破坏性更新,建议看看开发者写的 迁移指南,再更新。
对于不在堆栈中的容器,做法也差不多:在容器的详情页点“复制/编辑”,点击“部署容器”。
命令行法
shell
cd app_name
docker compose up -d --pull always # 拉取最新镜像,在后台运行自动更新应用
Docker 本身不提供此功能。但是WatchTower是一个自动更新Docker容器的应用,可以用它实现自动更新。
只需在 command 中,设定检查的时间、要自动更新的容器的ID。
计时方式:interval 指间隔;schedule 使用 cron 表达式。
cron 表达式:从左到右,每一位分别表示:(秒) 分 时 日 月 星期。
yaml
name: watchtower
services:
Watchtower:
image: containrrr/watchtower
container_name: Watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
TZ: Asia/Shanghai # 时区
command: --schedule "0 5 * * *" aria2 DDNS-Go AutoBangumi # 每天5点(24h制)检查并更新
# --interval 3600 / --schedule "0 5 * * *" # 两种计时方式卸载应用
删除容器或堆栈即可。
- Potainer > 堆栈
- 勾选堆栈,点击删除
或则在堆栈详情页删除其中的容器。或者在容器列表删除某个堆栈。
命令行法
shell
docker compose down挂载网络卷
命令行创建外部卷
创建 NFS 卷
shell
docker volume create \
--driver local \
--opt type=nfs \
--opt o=addr=192.168.5.25,vers=4,nolock,soft,rw \
--opt device=:/mnt/pool_1/Main/ \
mynfs创建 SMB 卷
shell
docker volume create \
--driver local \
--opt type=cifs \
--opt o=addr=192.168.5.25,username=用户,password=密码,vers=3.0 \
--opt device=//192.168.5.25/pool_1 \
my_smb使用示例
yml
name: alist
services:
alist:
image: xhofe/alist:latest
volumes:
- mynfs:/mnt/nfs
- my_smb:/mnt/nas
volumes:
mynfs:
external: true
my_smb:
external: true编排创建内部卷
yml
name: alist
services:
alist:
image: xhofe/alist:latest
volumes:
- mynfs:/mnt/nfs
- my_smb:/mnt/nas
volumes:
mynfs:
driver_opts:
type: "nfs"
o: "addr=192.168.5.25,vers=4,nolock,soft,rw"
device: ":/mnt/pool_1/Main/"
my_smb:
driver_opts:
type: "cifs"
o: "addr=192.168.5.25,username=用户,password=密码,vers=3.0"
device: "//192.168.5.25/pool_1"维护命令
shell
docker exec -it 容器名称 sh # 连接容器的 shell列出容器
shell
docker ps # 列出正在运行的容器
docker ps -a # 列出所有容器查看日志
shell
docker logs 容器名称 # 查看某个容器的日志
docker logs -f 容器名称 # 查看日志,实时地
docker compose logs # 查看本编排的日志编排的操作
shell
docker compose ps # 列出所有容器
docker compose logs # 查看日志
docker compose stop # 停止正在运行的容器
docker compose down [options]
# –rmi type,删除镜像,类型必须是:all,删除 compose 文件中定义的所有镜像;local,删除镜像名为空的镜像
# –v, –volumes,删除已经在 compose 文件中定义的和匿名的附在容器上的数据卷