【问题标题】:Docker image versioning and lifecycle managementDocker 映像版本控制和生命周期管理
【发布时间】:2015-08-19 14:29:29
【问题描述】:

我正在进入 Docker,并试图更好地了解它在“现实世界”中的工作原理。

我想到,在实践中:

  • 您需要一种方法来对 Docker 映像进行版本控制
  • 您需要一种方法来告诉 Docker 引擎(在 VM 上运行)停止/启动/重新启动特定容器
  • 您需要一种方法来告诉 Docker 引擎运行哪个版本的映像

Docker 是否附带内置命令来处理这些命令?如果不是,使用什么工具/策略来完成它们?另外,当我构建 Docker 映像(例如,docker build -t myapp .)时,会生成什么文件类型以及它在机器上的什么位置?

【问题讨论】:

标签: docker versioning lifecycle


【解决方案1】:

docker 拥有构建镜像和运行容器所需的一切。您可以通过编写 Dockerfile 或从 docker hub 拉取来创建自己的镜像。

在 Dockerfile 中,您指定另一个镜像作为镜像的基础,运行命令 install things。图像可以有标签,例如 ubuntu 图像可以有最新的或 12.04 的标签,可以用ubuntu:latest 表示法指定。

使用docker build -t image-name . 构建映像后,您可以使用 `docker run --name container-name image-name 从该映像创建容器。

docker ps 查看正在运行的容器

docker rm <container name/id> 删除容器

【讨论】:

  • 我觉得这个答案不够充分,因为同一标签可能有多个版本。我们需要一种能够将依赖关系锁定到特定版本标签的方法。例如,这些标签都引用了不同版本的 RMQ 镜像:hub.docker.com/r/library/rabbitmq/tags,但是当最近有人对 dockerfile 进行了更改并重新发布了镜像时,当 docker 主机重新启动并且该标签的最新镜像时,它破坏了我们的 prod RMQ被拉下来了。
  • @ReneWooller 我认为答案是不使用latest。所以在你的情况下,用FROM rabbitmq:3.6.1行开始你的Dockerfile
  • 好主意,但不,在我描述的情况下,我们没有使用最新版本,而是试图将其锁定到特定版本。如果人们使用 docker 文件本身的附加版本号标记版本(例如 rabbitmq:3.6.1_dv0.0.5),则不会有问题,但是,疯狂的是,当前的标准方法是标记任何应用程序的版本dockerfile 用于。例如:rabbitmq:3.6.1。然后这些标签的内容可以在幕后更改,除了分叉 dockerfile 之外,无法锁定它们。
  • @ReneWoller 也许这在你写这篇文章的时候是不可能的,但现在你可以通过它的摘要拉取一个特定的图像版本,如下所示:docker pull rabbitmq@sha256:ref跨度>
【解决方案2】:

假设我们有一个像下面这样的 docker 文件:

->从 git 构建,无需版本控制: sudo docker build https://github.com/lordash/mswpw.git#fecomments:comments

在这里: fecmets 是分支名称,cmets 是文件夹名称。

->从带有标签和版本的 git 构建: sudo docker build https://github.com/lordash/mswpw.git#fecomments:comments -t lordash/cmets:v1.0

->现在如果你想从一个目录构建:首先进入 cmets 目录运行命令 sudo docker build .

->如果你想添加标签,你可以使用 -t 或 -tag 标志来做到这一点: sudo docker build -t lordash .sudo docker build -t lordash/cmets .

-> 现在您可以在标签的帮助下对图像进行版本控制: sudo docker build -t lordash/cmets:v1.0 .

->您还可以将多个标签应用于图像: sudo docker build -t lordash/cmets:latest -t lordash/cmets:v1.0 .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2013-01-06
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多