前提是别人通过docker run 启动的容器,我这里没有备份和命令,我怎么才能把docker run启动的所有容器通过命令导出为docker-composer.yml文件。
导出的命令有一个镜像是国外的镜像,点击这里下载
1.查看所有容器
[root@ecs-63dd ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac50c2418061 postgres:14 "docker-entrypoint.s..." 4 minutes ago Up 4 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres
547faaccb3af redis "docker-entrypoint.s..." 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
c87cb0da9c91 nginx "/docker-entrypoint...." 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
759f4890ef2d httpd "httpd-foreground" 6 minutes ago Up 6 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp httpd
992cc8710f0b mysql:5.7 "docker-entrypoint.s..." 13 minutes ago Up 13 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql57
[root@ecs-63dd ~]#
2.一次性导出所有容器
# 抓取全部容器ID,批量生成完整 compose 文件
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose:latest $(docker ps -aq) > all_container_compose.yml
[root@ecs-63dd ~]# ls
[root@ecs-63dd ~]# # 抓取全部容器ID,批量生成完整 compose 文件
[root@ecs-63dd ~]# docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/red5d/docker-autocompose:latest $(docker ps -aq) > all_container_compose.yml
[root@ecs-63dd ~]# ls
all_container_compose.yml
[root@ecs-63dd ~]#
3.删除所有容器
bash
docker rm -f $(docker ps -a -q) #强制删除所有容器
4.利用导出的文件启动容器
bash
docker compose -f all_container_compose.yml up -d
docker compose up -d
5.验证结果没有问题
bash
[root@ecs-63dd ~]# ls
all_container_compose.yml
[root@ecs-63dd ~]# docker compose -f all_container_compose.yml up -d
WARN[0000] /root/all_container_compose.yml: `version` is obsolete
[+] Running 5/5
✔ Container nginx Started 1.1s
✔ Container postgres Started 0.9s
✔ Container httpd Started 1.2s
✔ Container mysql57 Started 1.0s
✔ Container redis Started 0.7s
[root@ecs-63dd ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
faff11adbecf mysql:5.7 "docker-entrypoint.s..." 7 seconds ago Up 6 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql57
0d8674d38ce4 nginx "/docker-entrypoint...." 7 seconds ago Up 6 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
46ef44ce45c7 httpd "httpd-foreground" 7 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp httpd
8895ed1c2515 redis "docker-entrypoint.s..." 7 seconds ago Up 6 seconds 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis
d9c5ab39044a postgres:14 "docker-entrypoint.s..." 7 seconds ago Up 6 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres
[root@ecs-63dd ~]#
[点击并拖拽以移动]