
skopeo,这个工具是目前用到最频繁的工具之一,而最频繁的操作就是通过github的action从docker官方仓库同步到阿里云镜像仓库,然后就可以在国内环境去使用了。
具体操作后面介绍,这里先简单介绍下该工具。
这个工具是containers社区维护的开源工具,是一个命令行工具,专门用于操作容器镜像和镜像仓库,最大的特点在可以无需docker环境就可以直接与仓库交互,非常适合CI/CD的场景。
而在国内,它最大的用途则在于可以从docker官方镜像库同步到国内。
docker pull / docker push 依赖 Docker Daemon,skopeo 直接用 HTTP(S)/registry API 操作镜像。skopeo inspect docker://docker.io/library/nginx:latest会输出镜像的 digest、架构、layers、标签等信息。
把 nginx:latest 从 Docker Hub 复制到阿里云仓库:
skopeo copy docker://docker.io/ansible/ansible:ubuntu1404 docker://registry.cn-hangzhou.aliyuncs.com/argo_study/ansible:ubuntu1404如果你想要结合github action,其实主要是利用github的网络环境,来同步的话,可以如下:
name: Sync Image to Aliyun Example
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Git pull
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.9.1
- name: Login to Docker Hub
uses: docker/login-action@v2.2.0
with:
registry: registry.cn-hangzhou.aliyuncs.com
username: 自己的用户
password: 自己的密码
logout: false
- name: Use Skopeo Tools Sync Image to Docker Hub
run: |
skopeo copy docker://docker.io/ansible/ansible:ubuntu1404 docker://registry.cn-hangzhou.aliyuncs.com/argo_study/ansible:ubuntu1404
# 使用 skopeo 工具将镜像同步到阿里云个人仓库中,使用时请自行源和目标修改仓库名称和镜像名称👉 适合做镜像同步、镜像加速。
skopeo copy docker://docker.io/library/alpine:3.19 dir:/tmp/alpine-dir
skopeo copy docker://docker.io/library/alpine:3.19 oci:/tmp/alpine-oci:3.19
skopeo copy docker://docker.io/library/alpine:3.19 docker-archive:/tmp/alpine.tar:3.19
cosign / sigstore 等工具):skopeo copy --sign-by dev@example.com docker://nginx:latest \
docker://registry.example.com/secure/nginx:latestskopeo inspect --verify docker://registry.example.com/secure/nginx:latest
比如Jenkins Pipeline,不想拉取镜像浪费空间,可以只用 skopeo inspect 获取 digest,然后做安全扫描或比较:
digest=$(skopeo inspect docker://nginx:latest | jq -r .Digest)
echo "Current Nginx digest: $digest"原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。