前提是别人通过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.删除所有容器

docker rm -f $(docker ps -a -q)  #强制删除所有容器

4.利用导出的文件启动容器

docker compose -f all_container_compose.yml up -d


docker compose up -d  

5.验证结果没有问题

[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 ~]#

[点击并拖拽以移动]
​

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐