til*_*lda 6 filesystems deployment layer docker
我正在构建服务器上构建一个Docker镜像(使用TeamCity).构建完成后,我想获取映像并将其部署到某个服务器(登台,生产).
我找到的所有教程
我真的认为在(app)服务器上不应该做任何特别的事情.图像,IMO,应该作为封闭的,自给自足的二进制文件,代表整个应用程序,可以在构建服务器,测试,问答等之间传递.
但是,当我save基于官方node存储库的标准NodeJS应用程序时,它具有1.2 GB.将这样的文件从服务器传递到服务器并不是很舒服.
问:有没有办法通过SSH导出/保存和"上传"图像的更改部分(图层),而不会引入Docker存储库的复杂性?然后,服务器将从公共中提取缺少的层,hub.docker.com以避免从网络缓慢上载到云.
save从技术角度来看,投资tar tarfile的内容应该不难.该push命令基本上就是这样 - 它永远不会上传已经存在于repo中的图层.
Q2:您认为在我正在部署的docker-host上运行一个小型仓库以实现这一目标是一个好方法吗?
Usm*_*ail -1
如果您的代码可以存在于 Github 或 BitBucket 上,为什么不免费使用DockerHub 自动构建。这样在你的节点上你只需要docker pull user/image. github 存储库和 dockerhub 自动构建都可以是私有的,因此您不必向全世界公开您的代码。尽管您可能需要为多个私有存储库或构建付费。
如果您仍然想构建自己的映像,那么当您运行构建命令时,您会看到类似于以下内容的输出:
Step 0 : FROM ubuntu
---> c4ff7513909d
Step 1 : MAINTAINER Maluuba Infrastructure Team <infrastructure@maluuba.com>
---> Using cache
---> 858ff007971a
Step 2 : EXPOSE 8080
---> Using cache
---> 493b76d124c0
Step 3 : RUN apt-get -qq update
---> Using cache
---> e66c5ff65137
Run Code Online (Sandbox Code Playgroud)
每个哈希e.g. ---> c4ff7513909d都是中间层。您可以在 处找到以该哈希命名的文件夹/var/lib/docker/graph,例如:
ls /var/lib/docker/graph | grep c4ff7513909d
c4ff7513909dedf4ddf3a450aea68cd817c42e698ebccf54755973576525c416
Run Code Online (Sandbox Code Playgroud)
只要将所有中间层复制到部署服务器,就不需要外部 Docker 存储库。如果您仅更改中间层之一,则只需重新复制该中间层即可进行重新部署。如果您注意到 DockerFile 中列出的每个步骤都会导致一个中间层。只要您只更改 DockerFile 中的最后一行,您就只需要上传一层。因此,我建议将 ADD 代码行放在 docker 文件的末尾。
ADD MyGeneratedCode /var/my_generated_code
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1497 次 |
| 最近记录: |