加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

部署 – 在不使用存储库的情况下部署Docker映像

发布时间:2020-12-16 03:40:12 所属栏目:安全 来源:网络整理
导读:我正在构建服务器上构建一个Docker镜像(使用TeamCity).构建完成后,我想获取映像并将其部署到某个服务器(登台,生产). 我找到的所有教程 将图像推送到某个存储库,服务器可以将其下载(拉出),在小型项目中会引入额外的复杂性 使用类似Heroku的方法并在“附近”或

我正在构建服务器上构建一个Docker镜像(使用TeamCity).构建完成后,我想获取映像并将其部署到某个服务器(登台,生产).

我找到的所有教程

>将图像推送到某个存储库,服务器可以将其下载(拉出),在小型项目中会引入额外的复杂性
>使用类似Heroku的方法并在“附近”或在将运行它的机器上构建图像

我真的认为在(app)服务器上不应该做任何特别的事情.图像,IMO,应该作为封闭的,自给自足的二进制文件,代表整个应用程序,可以在构建服务器,测试,Q& A等之间传递.

但是,当我保存基于官方节点存储库的标准NodeJS应用程序时,它具有1.2 GB.将这样的文件从服务器传递到服务器并不是很舒服.

问:有没有办法通过SSH导出/保存和“上传”图像的更改部分(图层),而不会引入Docker存储库的复杂性?然后,服务器将从公共hub.docker.com中提取缺少的图层,以避免从网络缓慢上传到云.

从技术角度来看,投资保存的tarfile的内容应该不难. push命令基本上就是这样 – 它永远不会上传repo中已经存在的层.

Q2:您认为在我正在部署的docker-host上运行一个小型仓库以实现这一目标是一个好方法吗?

最佳答案
如果你的代码可以在Github或BitBucket上运行,为什么不只是免费使用DockerHub Automated builds.在你的节点上你只需要停靠用户/图像. github存储库和dockerhub自动构建都可以是私有的,因此您不必将代码暴露给全世界.虽然您可能需要为多个私有存储库或构建付费.

如果您仍然想要构建自己的图像,那么当您运行构建命令时,您会看到类似于以下内容:

Step 0 : FROM ubuntu
 ---> c4ff7513909d
Step 1 : MAINTAINER Maluuba Infrastructure Team 

每个哈希例如—> c4ff7513909d是中间层.您可以在/ var / lib / docker / graph中找到以该哈希命名的文件夹,例如:

ls /var/lib/docker/graph | grep c4ff7513909d
c4ff7513909dedf4ddf3a450aea68cd817c42e698ebccf54755973576525c416

只要将所有中间层复制到部署服务器,就不需要外部docker存储库.如果您只更改其中一个中间层,则只需重新复制该中间层即可进行重新部署.如果您注意到DockerFile中列出的步骤都会导致中间层.只要您只更改DockerFile中的最后一行,您只需要上传一个图层.因此,我建议将您的ADD代码行放在docker文件的末尾.

ADD MyGeneratedCode /var/my_generated_code

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读