使用Docker提供软件更新

时间:2017-06-14 19:04:34

标签: docker docker-compose devops software-distribution orchestration

我正在使用docker-compose在内部运行多容器软件(离线网络)。当没有与Docker注册表的直接连接时,提供软件更新的最佳方法是什么?

我尝试了两个选项(两者都不够): 1.提供使用.hidden { display:none; }创建的完整Docker镜像。非常低效 - 每个图像都超过1gb,没有图层优化。 2.除Docker镜像外还提供自定义软件,并将其与主机卷映射到通用容器中。这样我就可以提供自定义软件更新,并减少需要更新Docker镜像的时间。然而,它远非最优化。

有没有办法只使用自定义软件作为文件提供更新的Docker层?还有其他想法吗?

谢谢, 梅尔

1 个答案:

答案 0 :(得分:2)

您有几种选择:

  • 在专用网络中设置私有注册表,让服务器使用该
  • 利用torrent协议加快速度,请参阅Docket project
  • 如果没有,请使用Configuration选项gzip保存并使用public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); var options = new RewriteOptions() .AddRedirectToHttps(); app.UseRewriter(options); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseIdentity(); app.UseFacebookAuthentication(new FacebookOptions() { AppId = Configuration["Authentication_FacebookAppId"], AppSecret = Configuration["Authentication_FacebookAppSecret"] }); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } 代替--rsyncable
  • 使用docker-slim缩小最终图像尺寸

我希望上面几种方法的组合应该足够好。