经常使用docker,有的是用命令行形式,有的是docker-compose形式,用这个工具可以从容器生成yaml格式的定义。本文记录了用docker方式使用此工具。
项目地址:Red5d/docker-autocompose
可以通过克隆此存储库并构建映像或使用 GitHub 上自动生成的映像 ,从 Docker 容器使用此工具。
拉取镜像
docker pull ghcr.io/red5d/docker-autocompose:latest
使用方法
- 使用新镜像从正在运行的容器或以空格分隔的容器名称或 ID 列表生成 docker-compose 文件:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose <container-name-or-id> <additional-names-or-ids>...
输出alist结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| root@onecloud:~# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose alist services: alist: command: - "/entrypoint.sh" container_name: "alist" environment: - "PUID=0" - "PGID=0" - "UMASK=022" - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - "RUN_ARIA2=false" hostname: "7d3b5dccfdba" image: "xhofe/alist:latest" ipc: "private" labels: MAINTAINER: "i@nn.ci" org.opencontainers.image.created: "2025-03-27T15:49:55.334Z" org.opencontainers.image.description: "\U0001F5C2️A file list/WebDAV program that supports multiple\ \ storages, powered by Gin and Solidjs. / 一个支持多存储的文件列表/WebDAV程序,使用 Gin 和 Solidjs。" org.opencontainers.image.licenses: "AGPL-3.0" org.opencontainers.image.revision: "0cde4e73d614a4bf0b28872391a13d0f8a6d166a" org.opencontainers.image.source: "https://github.com/AlistGo/alist" org.opencontainers.image.title: "alist" org.opencontainers.image.url: "https://github.com/AlistGo/alist" org.opencontainers.image.version: "v3.44.0" logging: driver: "json-file" options: {} mac_address: "da:0c:77:9d:52:9d" network_mode: "bridge" ports: - "5244:5244/tcp" restart: "unless-stopped" volumes: - "/etc/alist:/opt/alist/data" working_dir: "/opt/alist/" version: "3.6"
|
- 以 docker-compose 格式打印出所有容器:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose $(docker ps -aq)
网络上有一些docker cli和yaml相互转化的工具,但用过之后都不太理想,参数复杂的时候转化的结果都不能用。这个工具生成的内容比正常的yaml多。