Docker 将停靠的web应用部署到封闭系统中

Docker 将停靠的web应用部署到封闭系统中,docker,deployment,production-environment,docker-image,Docker,Deployment,Production Environment,Docker Image,我们必须将停靠的web应用程序部署到一个封闭的外部系统(客户机的服务器)中。 (我们的图片由gunicorn、nginx、django python web应用程序制作而成) 我已经考虑过的选项很少: 选项1)使用docker注册表:将图像推送到注册表,拉 从客户端的系统运行docker和拉取的图像组成 选项2)docker保存/加载.tar文件:docker在本地开发中保存图像 环境中,将.tar文件移动到客户端系统中并运行docker load (.tar文件)在那里 我们目前的做法是:

我们必须将停靠的web应用程序部署到一个封闭的外部系统(客户机的服务器)中。 (我们的图片由gunicorn、nginx、django python web应用程序制作而成)

我已经考虑过的选项很少:

  • 选项1)使用docker注册表:将图像推送到注册表,拉 从客户端的系统运行docker和拉取的图像组成
  • 选项2)docker保存/加载.tar文件:docker在本地开发中保存图像 环境中,将.tar文件移动到客户端系统中并运行docker load (.tar文件)在那里
我们目前的做法是:

  • 我们希望在docker映像中移动源代码(如果可能的话)
  • 我们不能将我们的私有docker注册表公开--但是--(因此选项1不存在了)
  • 客户端服务器只能从其内部本地网络访问(没有连接到任何其他外部网络)
  • 我们不想在更新(我们的应用程序)时复制所有文件,我们想做的是检测docker映像上的差异或更改,只将应用程序更改的部分复制/移动/更新到客户端服务器。(选项2也不存在)
使用上面介绍的方法,有没有更好的方法部署到客户机的服务器上

PS:我目前正在检查“docker提交”:我们可以做的是,docker将我们的基本映像加载到客户机的服务器中,用该映像启动容器,当我们有更新时,我们可以将更改的文件复制到该容器的文件系统中,然后docker提交(以保持容器的更改版本)。但我不喜欢这个选项,因为我们需要在头脑中保留更改,然后将更改的文件(如更新的.py或.html文件)移动到客户端服务器


提前感谢

您可以要求客户端在其内部网络上配置VPN。因此,您可以将更改推送到将在客户端内部网络上运行的专用docker注册表。感谢您的建议,但我们不希望为客户端系统/网络上的小型web应用程序创建另一个依赖项᷅_(ヅ)_/ ᷄根据您的要求,您不能使用Docker,原因与您确定的完全相同。(
Docker load
仅适用于完整的图像,因此即使您竭尽全力制作具有特定更新的层,您仍必须传输和加载整个更新的图像。)请忘记
docker commit
:它无助于解决此问题,并导致“特殊”手动构建映像,使用它几乎从来都不是一个最佳实践。明白了。如果可能在客户端计算机上运行小脚本,那么您可以使用SSH隧道方法。为此,您可以使用ngrok。这将公开打开特定端口(从内部网)。您可以将docker注册表端口打开并访问它。部署完成后,您可以终止隧道。但是,您需要再次在客户端计算机上配置docker注册表。