从本地docker image构建singularity image

local docker repo

参照 [1-3,6,7] 用 registry:latest 在本地建好 docker 仓库:

  • /etc/docker/daemon.json,加一行:
    "insecure-registries": ["1.2.3.4:5000"]
    
    其中 1.2.3.4 是 docker registry 服务器的 IP。参考 [5],为解决 http 和 https 的问题,在要 pull 的机器上的 daemon.json 也加上。
  • 重启 docker:service docker restart
  • pull:docker pull registry
  • run:
    docker run --name="registry" -d --restart=always \
        # -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
        -e REGISTRY_STORAGE_DELETE_ENABLED=true \
        -p 5000:5000 \
        -v /home/docker:/var/lib/registry \
        # -v /home/docker:/tmp/registry \
        registry:latest
    
    其中 /home/docker 是宿主机放 docker image 的路径,这个目录映射可以防止 registry 容器删除时,已经 pushed 去里面的 images 丢失。
    (问:此处如果将本机 docker image 目录映射去 registry 容器内,是不是就可以不用 push,commit 完就直接可以在 registry 内看到?)

将自制 docker image 打 tag,如 1.2.3.4:5000/my-image:v1(记得带上端口号,本例即 :5000,否则后面会报错),push 去本地仓库:docker push 1.2.3.4:5000/my-image:v1

build singularity image

在另一台用 singularity 的、能访问 1.2.3.4 的机,基于刚 push 上的 my-image:v1 build 一个 singularity simage(.simg 文件):

SINGULARITY_NOHTTPS=1 \
singularity -d build /home/tom/singularity-images/my-image-v1.simg \
    docker://1.2.3.4:5000/my-image:v1

其中 SINGULARITY_NOHTTPS=1 是为了解决 https 的问题,否则会报错,见 [4]。

References

  1. 如何搭建docker本地仓库
  2. Docker搭建本地私有仓库
  3. 私有仓库
  4. How to build a singularity image from a local docker image (not a registry image)? #1537
  5. Mac系统上 docker仓库提示 http: server gave HTTP response to HTTPS client 的解决方法
  6. 私有 Docker Registry 删除镜像
  7. docker私有仓库删除image
  8. nvidia TensorFlow container
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值