4 个版本
1.0.0-rc.4 | 2023 年 8 月 20 日 |
---|---|
1.0.0-rc.3 | 2023 年 8 月 18 日 |
1.0.0-rc.2 | 2023 年 8 月 17 日 |
#278 in Unix API
42KB
931 行
ED 守护进程
WIP - 已实现基本加载/停止/信息功能,更多功能即将推出!
Ed 是一个简单的 Docker 运行时管理器,用于将容器镜像推送到远程系统 - 目的是提供一个简单的机制来部署容器,该机制不依赖于维护集中式仓库。
这是在远程系统上运行的守护进程。
守护进程使用 Docker API 和 Docker 命令行管理已部署容器的生命周期。通过使用 mTLS 加密的 REST 接口访问守护进程。
用法
守护进程将执行类似于以下 docker 命令行 run 命令:
docker run -d -it -p 80:8000 -v /var/data/app:/usr/share/nginx/html --name website nginx
---t
标志是必需的,而 --name
参数由 ed 设置,其余参数在 ed-daemon 配置文件 /etc/edd/config.json
中设置。
{
"deployments": [
{
"name": "website",
"args": ["-p", "80:8000", "-v", "/var/data/app:/usr/share/nginx/html"]
}
]
}
然后可以使用以下命令控制容器:
/v1/deployments/website/load
/v1/deployments/website/stop
/v1/deployments/website/start
/v1/deployments/website/restart
load
操作接受 .tar
或 .tar.gz
上传,并将加载新镜像,停止任何现有网站容器,然后重新标记并启动新容器。
stop
和 start
操作允许控制正在运行或已停止的容器。 restart
操作将停止并重新启动容器 - 注意,配置更改不会重新加载,需要重新启动守护进程。
mTLS 安全性需要服务器证书和密钥,以及用于签署客户端证书的 CA 证书,默认位置如下:
- /etc/edd/server.crt
- /etc/edd/server.key
- /etc/edd/ca.crt
示例
在这个示例中,生成了一个包含静态网站文件的alpine/lighttpd容器镜像,并将创建的镜像推送到远程端点。
Dockerfile
:
FROM alpine:latest
RUN apk add lighttpd curl && rm -rf /var/cache/apk/*
COPY ./website /var/www/localhost/htdocs
HEALTHCHECK --interval=1m --timeout=1s \
CMD curl -f https://127.0.0.1/ || exit 1
EXPOSE 80
ENTRYPOINT ["/usr/sbin/lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"]
docker build . -t website:latest
docker save website:latest | gzip | curl --cacert ca.crt \
--key client.key \
--cert client.crt \
-X POST -H "Content-Type:application/x-tar" -T - 'https://192.168.0.100:8866/v1/website/load'
ca.crt
是服务器证书颁发机构 - 这可能与客户端签名证书颁发机构不同。
安装(待定)
使用rust cargo管理器安装最简单,必须将rust安装在具有使用docker权限的用户中 - 这可以通过以下说明完成:https://rust-lang.net.cn/tools/install。
然后使用以下命令安装ed-daemon
cargo install ed-daemon --root /usr/bin
这将把可执行文件安装到 /usr/bin/ed-daemon
,以下文件夹/文件也将被创建
/etc/edd/config.toml
/etc/edd/config.defaults.toml
/etc/systemd/system/edd.servie
服务尚未启用或启动,一旦添加了所需的密钥和证书(/etc/edd/server.crt
、/etc/edd/server.key
、/etc/edd/ca.crt
)并设置了配置,则可以使用以下命令启用服务
systemctl enable ed-daemon
systemctl start ed-daemon
配置文件
完整的配置文件(/etc/edd/config.toml
,或使用--config
参数为ed-daemon
可执行文件设置)有以下默认值
{
"docker_socket": "/var/run/docker.sock",
"container_prefix": "ed_",
"tls_key": "/etc/edd/server.key",
"tls_certs": "/etc/edd/server.crt",
"mututal_tls_ca_certs": "/etc/edd/ca.crt",
"deployments": [ ... ]
}
只需要 deployments
部分。
依赖关系
~26–57MB
~1M SLoC