免责声明:我对 Docker 没有任何实际了解。我之前从未使用过它。
我的公司刚刚为客户接管了一个网站。之前的开发人员已经无法使用,客户也没有技术人员。我们无法(也不会)访问任何以前的源代码控制、资产或流程。我们只能通过 SSH 访问生产服务器。
当源代码和数据库位于 Docker 容器中时,如何从服务器中拉取源代码和数据库?是否可以对 Docker 容器进行逆向工程以供我们的开发人员使用?
答案1
好的部分是这非常简单!
因此您可以通过以下方式查看所有正在运行的容器
docker ps
获得所需容器的 ID 后,你可以运行
docker exec -it DockerContainerID sh
这会将你带入容器的 shell,找到代码后,你可以通过以下命令将其复制到主机
docker cp DockerContainerID:/path/on/container ./localdir
然后您可以将其放到本地位置并进入源代码控制。
要获取数据库,您可以将数据库转储到容器内,然后使用docker cp
命令获取备份,然后将其导入到其他地方。
答案2
Mike 的回答很有帮助。我只想补充几点。您还可以检查容器是否有任何卷挂载点。通常,容器在主机上挂载了用于数据目录的卷(例如 /var/www/html)。因此,您可以直接从主机复制数据,而无需从容器中提取数据。
docker inspect container_ID | grep -i -A 10 bind
"Binds": [
"/webdata:/var/www/html:rw"
],