如何从服务器上的docker容器恢复网站?

免责声明:我没有Docker的实际知识。 我从来没有用过它。

我的公司刚接手一个客户的网站。 以前的开发人员是不可能的,客户没有技术人员。 我们不会(也不会)访问任何以前的源代码pipe理,资产或stream程。 我们只能通过SSH访问生产服务器。

当它在Docker容器中时,我怎样才能从服务器上取得源代码和数据库? 是否有可能逆向工程Docker容器供我们的开发人员使用?

好的部分是这很容易!

所以你可以查看所有正在运行的容器

docker ps 

一旦你有你需要的容器的ID,你可以运行

 docker exec -it DockerContainerID sh 

这将把你放入容器的shell,一旦你find代码,你可以通过下面的命令把它复制到主机

 docker cp DockerContainerID:/path/on/container ./localdir 

然后你可以把它带到当地,并进入源代码pipe理。

要获取数据库,您可以将数据库转储到容器中,然后使用docker cp命令将备份从其他位置导入。

Mike给出的答案非常有帮助。 只是想补充一点。 您还可以检查容器是否有任何卷装入点。 一般来说容器已经在主机上为数据目录安装了卷(例如/var/www/html)。 因此,您可以直接从主机复制数据,而无需从容器中提取数据。

 docker inspect container_ID | grep -i -A 10 bind "Binds": [ "/webdata:/var/www/html:rw" ],