假设我有一台机器。它可以是单个生产服务器、集群中的一个生产节点、某种登台服务器、用于测试的服务器或集群或开发人员工作站。或者不同的东西。
现在我想将应用程序交付给机器并运行它。我可以 git pull && docker build
。或者我可以docker pull
。或者我可以 git pull
到另一台机器,然后 scp
代码代替。或者我可以 scp
docker image tar 然后 docker load
而不是 docker pull
。
当然,Git 和 Docker 完全不同,而且经常同时使用。但是,两者都有存储库,并且都可以用于存储和交付代码。甚至命令本身也被称为相同的:push 和 pull。 Docker 甚至有一些类似于提交的图像标签。因为标签还有助于保留应用的多个版本。
甚至还有一个完全基于 Git 的用于在生产环境中交付应用程序的工具。这是卡皮斯特 pull 诺。 Capistrano git pull
s 代码到另一个目录,然后重定向一个符号链接(symbolic link)到它以便部署。
问题是在决定是 git pull
还是 docker pull
将代码交付给机器时要考虑哪些原因?
最佳答案
就像其他答案所说,git 用于版本控制,例如对于文本文件。
您从“dockerfile”(这是一个文本文件)构建一个 docker 容器。 这个“dockerfile”被放置在一个包含许多其他文件和文件夹的目录中。
因此,如果您将 dockerfile 所在的这个目录放入 git 存储库,那么有权访问它的每个人都可以构建相同的 docker 容器,具有相同的配置和所有内容。
你是这个意思吗?
因此,docker 容器是一个“建筑物”,而 DOCKER 存储库是一个市场,您可以在其中下载已构建的建筑物(图像),从中您可以运行虚拟机/容器。
GIT 存储库中的文件(这就像一个大文件,例如文档)是“ build 计划”。你通过 git “共享”不同版本的“施工计划”,这样每个人都可以构建每个版本的建筑物。
示例工作流程:
在您的开发环境(您的本地计算机)中:
git pull
- 从 git 存储库(例如 dockerfile)中提取“构造 - 指令”docker build
- 从 dockerfile-instructions 构建 docker 镜像docker push myDockerRepo/myDockerImage:latest
- 将新建的 docker 镜像推送到 DOCKER 仓库(不是 git-repository)在您的生产环境中:
docker pull myDockerRepo/myDockerImage:latest
- 从 DOCKER-repository pull 最新的 docker 镜像docker run
- 从 docker 镜像中运行一个新的容器化实例(基本上是一个 VirtualMachine)https://stackoverflow.com/questions/49071356/
相关文章:
docker - 如何在 Docker 内的 Jenkins 中运行 Katalon 测试套件
Docker - 关于使用 Redis、Postgres、ElasticSearch、NGINX、W
macos - 无法从 docker 容器访问本地网络 IP
docker - 如何用 nix 构建一个 docker 容器?
docker - 如何在 Docker 中将卷从容器挂载到主机?
docker - 如何在 Docker Hub 上查看 Docker 镜像层?
docker - 为什么 Kubernetes 源代码比其他容器编排器大一个数量级?