docker - 有没有办法在 dockerfiles 中使用容器注册表图像?
问题描述
我目前正在尝试在 Gitlab CI 中构建 docker 图像。在这里,我尝试使用 Gitlab 容器注册表中的图像来构建图像。
FROM <CI_REGISTRY>/<CI_PROJECT_ROOT_NAMESPACE>/<CI_PROJECT_NAME>/<image_name>
RUN echo 'hello world'
执行与
test:
stage: build
image: docker
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker build --pull -t $CI_REGISTRY_IMAGE/test:latest .
- docker push $CI_REGISTRY_IMAGE/test:latest
无法构建映像,因为清单是未知的。
这样做的最佳方法是什么?在构建图像之前在工作中提取图像对我来说并不合适。
谢谢
解决方案
我想你可能会读到这个: https ://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
那么你的 docker 文件可能会像这样开始:
ARG CI_REGISTRY_IMAGE_FULL_NAME
FROM ${CI_REGISTRY_IMAGE_FULL_NAME}
那么您对 docker build 的调用可能如下所示:
script:
- > docker build --pull
--build-arg CI_REGISTRY_IMAGE_FULL_NAME=$CI_REGISTRY_IMAGE_FULL_NAME
-t $CI_REGISTRY_IMAGE/test:latest .
不要将 CI_REGISTRY_IMAGE_FULL_NAME 基础镜像的名称与 $CI_REGISTRY_IMAGE/test:latest 混淆,后者将是新的镜像名称
推荐阅读
- css - Laravel 混合跳过一条 scss 行
- mpi - 了解混合 OpenMP/MPI 并行化(使用 Slurm)
- javascript - 正则表达式同时处理来自 html 示例文本的两个标签
- cassandra - 达到最大内存使用量 (4294967296),无法分配 1048576 块
- ruby-on-rails - Rails 6 删除 form_with 上的“data-disable-with”提交按钮或将其设为 false
- java - 在春季启动一段时间后,数据库连接丢失
- opengl - 如何使用 vbo 为每个三角形着色
- c# - Asp.net C#:系统错误可以找到使用序列化 json 值时指定的文件(字典)
- java - JUnit - 单元测试
- sql - Oracle SQL 在单个查询中获取计数和行数