我们的应用程序是容器化的,并使用码头群作为一个协调器。我想了解我们如何推广码头形象,从开发,qa,uat和生产。例如,如果我在dev as test中创建了一个映像:10 (10是jenkins生成的版本号)。我怎样才能把同样的形象推广到qa,uat和生产上?我们目前正在使用NEXUS作为一个坞库。我不明白的是,我将如何提取开发环境中使用的确切图像。有人能帮忙吗?
发布于 2019-10-10 16:30:03
您可以将图像从一个对接者映像库提升到另一个图像库,方法是重新定位图像并推送:
docker build -t my-test .
docker tag my-test your-image-repository-dev/test:10
docker login "your-image-repository-url"
docker push your-image-repository-dev/test:10
# ... deploy/test your image in dev
docker pull your-image-repository-dev/test:10
docker tag your-image-repository-dev/test:10 \
your-image-repository-qa/test:10
docker push your-image-repository-qa/test:10然后,您将在QA坞映像存储库中获得相同的映像。这对于通过单元/功能/用户验收测试的基本级别的图像来说是有意义的,这与没有通过测试的图像不同!这里的关键概念是你保持和推动你的形象的时机。此外,为每个停靠者映像库指定图像拉凭据可以帮助您将实际生成的图像限制到特定的环境中。
上述策略的另一种选择是,您可能没有单独的docker映像存储库,并且可能选择更改映像名而不是存储库。在这种情况下,您可以执行以下操作。
docker build -t my-test .
docker tag my-test your-image-repository/test:10
docker login "your-image-repository-url"
docker push your-image-repository/test:10
# ... deploy/test your image in dev
docker pull your-image-repository/test:10
docker tag your-image-repository/test:10 \
your-image-repository/test-qa:10
docker push your-image-repository/test-qa:10发布于 2019-07-15 14:41:25
解决这个问题的一种方法是使用CI/CD工具,例如Jenkins,甚至一些CI/CD bash脚本,并有一种标记策略。正如您可能知道的,您可以以不同的方式标记相同的图像。例如,您可以将生成的图像ID为0000,并多次将其标记如下:
Day 1:
| TAG | IMAGE ID |
| test:10 | 00000000 |
| test:dev-latest | 00000001 |
| test:qa-latest | 00000001 |
| test:prod-latest| 00000001 |
Day 2:
| TAG | IMAGE ID |
| test:10 | 00000000 |
| test:11 | 00000001 |
| test:dev-latest | 00000001 |
| test:qa-latest | 00000001 |
| test:prod-latest| 00000001 |而且你的策划者总是可以等待新的图像被标记。这种方法在理论上是有用的。但是,根据容器调度器的特定特性,您可以稍微改进这种方法,以使用这些特定的特性。例如,图像拖放策略、推出和回滚功能、实现蓝色/绿色策略的功能等。
发布于 2020-03-30 18:28:28
关键是在图像标记中使用某种形式的元数据来指示映像对应的部署过程的哪个步骤。有许多潜在的方法可以做到这一点,但可能首先看一下SemVer,因为它是一个有很好的文档和广泛使用的选项。
在拼写器中要注意的主要事项是在版本中使用-标记,这表明某些内容是“预发布”版本。
考虑到这一点,很容易将生产和非生产映像分开:
nginx:1.2.3nginx:1.2.3-10从那里,您可以进一步细分您的非生产版本,如果需要,通过使用“点分隔预发布标识符”。
nginx:1.2.3-dev.10nginx:1.2.3-qa.10nginx:1.2.3-uat.10您还可以使用其他标记方法,但是SemVer已经有了很好的文档化、广泛性,并且解决了这个问题。
https://stackoverflow.com/questions/48914389
复制相似问题