用Yacht管理docker容器

今天是六一儿童节,祝大小朋友们节日快乐!

从今天开始起,防范区的上海市民可以自由出入小区了。始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常。

周一上午的的核酸可能是我们最后一次集体核酸,因为当天下午已经把棚子都撤掉了,但抗原还是一天两次的做着,周二、周三都是。

周二发了最后一拨物资,同时也接到了公司通知,6 月 6 日上班,这么吉利的开工日期,希望未来的日子从此都是坦途,让我们全力以“复”。


什么是 Yacht ?

Yacht 是一个用于管理 docker 容器的 Web 界面,重点是提供一键式部署的模板。可以把它想象成一个分散的服务器应用商店,任何人都可以为其制作软件包。

安装

与容器相关的应用,都需要绑定挂载 /var/run/docker.sock ,包括我们之前安装的 portainerwatchtowerGlancesNetdatalazydocker 等。

什么是 /var/run/docker.sock ?

/var/run/docker.sockDocker API 的主要入口,简单地说,它是 Docker 守护进程(Docker daemon)默认监听的 Unix 域套接字(Unix domain socket),容器中的进程可以通过它与 Docker 守护进程进行通信。

title

图片来自:https://betterprogramming.pub/about-var-run-docker-sock-3bfd276e12fd

但是群晖的 Docker 管理器并不支持挂载 /var/run/docker.sock 文件,所以这次我们需用命令行来安装

命令行安装还是比较简单的,用 SSH 客户端连上群晖,执行下面👇的命令

老苏常用的 SSH 客户端主要是 FinalshellPuTTY

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 在 docker 中新建目录 yacht 和子目录 config
mkdir -p /volume2/docker/yacht/config

# 进入 yacht
cd /volume2/docker/yacht

# 启动容器
docker run -d \
--name yacht \
-p 8181:8000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume2/docker/yacht/config:/config \
--restart unless-stopped \
selfhostedpro/yacht

或者你可以用 docker-compose,将下面的内容保存为 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
version: "3"
services:
yacht:
image: selfhostedpro/yacht
container_name: yacht
ports:
- 8181:8000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /volume2/docker/yacht/config:/config
restart: unless-stopped

执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 在 docker 中新建目录 yacht 和子目录 config
mkdir -p /volume2/docker/yacht/config

# 进入目录
cd /volume2/docker/yacht

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

也可以将 docker-compose.yml 的内容放到 portainer 中执行

环境变量

Yacht 中可以使用下面的环境变量。这些变量是可选项,不是强制性的,可以根据自己的需要添加

可变
PUID 设置容器将运行的 userid
PGID 设置容器将运行的 groupid
SECRET_KEY 将此设置为随机字符串可确保您在 Yacht 重新启动之间不会被注销
ADMIN_EMAIL 这将设置默认 Yacht 用户的电子邮件
DISABLE_AUTH 这将禁用 Yacht 后端的身份验证。除非您使用 Authelia 之类的东西来管理身份验证,否则不建议这样做。
DATABASE_URL 如果您想让 Yacht 使用 SQL 之类的数据库而不是内置的 sqlite,您可以将这些信息按以下格式放在此处:postgresql://user:password@postgresserver/db
COMPOSE_DIR 这是容器内的路径,其中包含具有 docker compose 项目的文件夹。

使用

在浏览器中输入 http://群晖IP:8181 就能看到主界面

默认登录名是 admin@yacht.local,密码是 pass

登录成功后就能看到主界面

记得修改邮件和密码

小结

界面看着比 portainer 要好看一些,但是比较卡。

功能上来说该有的都有,但感觉还是比较早期,期待会越来越好吧

参考文档

SelfhostedPro/Yacht: A web interface for managing docker containers with an emphasis on templating to provide 1 click deployments. Think of it like a decentralized app store for servers that anyone can make packages for.
地址:https://github.com/SelfhostedPro/Yacht

Install Yacht | Yacht
地址:https://yacht.sh/docs/Installation/Install/