Red HatでOpenShiftのサポートをしているid:nekopです。OpenShift 全部俺 Advent Calendar 2018 - Qiitaの3日目のエントリです。
OpenShiftのJenkins Pipelineビルドなどを利用して、コンテナイメージをあるレジストリから別のレジストリにコピーしたかったりすることがあります。そんなときのためにoc image mirror
というコマンドがあります。
とりあえず手元でレジストリを2つ動作させて、適当なイメージをコピーしてみます。Fedora 29でpodmanを利用しているので全てnon-rootの一般ユーザです。RHELのpodmanではまだsudoが必要だと思います。
podman run -d --name=r1 registry:2 podman run -d --name=r2 registry:2 podman inspect r1 | grep IPAddress "IPAddress": "10.88.0.3", podman inspect r2 | grep IPAddress "IPAddress": "10.88.0.4",
レジストリのイメージが手元にあるのでそのままテストイメージとして利用し、r1にpushします。
$ podman tag docker.io/library/registry:2 10.88.0.3:5000/test/registry:2 $ podman push 10.88.0.3:5000/test/registry:2 --tls-verify=false Getting image source signatures Copying blob sha256:a120b7c9a693292190f50bc37e5847c7da5428e1852995e303bb1c718ed567d6 4.83 MB / 4.83 MB [========================================================] 0s Copying blob sha256:2b7bd2eefde24f621426f0d42036bb53b141f8d2ef734afd37ca5a8897662506 7.57 MB / 7.57 MB [========================================================] 0s Copying blob sha256:00a8ff67f927f16e8895c3fd541517c9cc8dfa1d2b81eecfabf9045d1e5e5e39 21.74 MB / 21.74 MB [======================================================] 1s Copying blob sha256:dead8a13b621ef850bc2f6b8ec33130b91f8fa59ac0a465b7de3a76558ebd20e 3.50 KB / 3.50 KB [========================================================] 0s Copying blob sha256:6b263b6e9ced9ada82d497c4a351653140f5f59dbb6a2cc099d54292a308edff 2.00 KB / 2.00 KB [========================================================] 0s Copying config sha256:2e2f252f3c88679f1207d87d57c07af6819a1a17e22573bcef32804122d2f305 3.09 KB / 3.09 KB [========================================================] 0s Writing manifest to image destination
これをoc image mirror
コマンドを利用してコピーしてみます。
$ oc image mirror 10.88.0.3:5000/test/registry:2 10.88.0.4:5000/test/registry:2 --insecure 10.88.0.4:5000/ test/registry blobs: 10.88.0.3:5000/test/registry sha256:bcd4a541795bb9981999ce8f6e2e1c92e55b0041256153d2458ff35fb9381063 212B 10.88.0.3:5000/test/registry sha256:f296fda86f10cfcb81d60d5bcb47a7784a8ec4876d6eac7fabd51f2a7e8694aa 369B 10.88.0.3:5000/test/registry sha256:2e2f252f3c88679f1207d87d57c07af6819a1a17e22573bcef32804122d2f305 3.091KiB 10.88.0.3:5000/test/registry sha256:ad0eac849f8f2014e20df11d611e4453c94a365a71eb3a90f02d8500391e1787 1.94MiB 10.88.0.3:5000/test/registry sha256:d6a5679aa3cfc52503fac8e2345790783537564df5af43355ec662d7703aacbf 2.277MiB 10.88.0.3:5000/test/registry sha256:2261ba058a15e3f21a467b1b02ea206d40cf0632d6b1aeee2ad200b662ed4aff 5.975MiB manifests: sha256:0e51cf12fb097201ded5b7daf648860d5a7ee806a7e9f6feaec3dc18f109d9dd -> 2 stats: shared=0 unique=6 size=10.2MiB ratio=1.00 phase 0: 10.88.0.4:5000 test/registry blobs=6 mounts=0 manifests=1 shared=0 info: Planning completed in 10ms uploading: 10.88.0.4:5000/test/registry sha256:d6a5679aa3cfc52503fac8e2345790783537564df5af43355ec662d7703aacbf 2.277MiB uploading: 10.88.0.4:5000/test/registry sha256:ad0eac849f8f2014e20df11d611e4453c94a365a71eb3a90f02d8500391e1787 1.94MiB uploading: 10.88.0.4:5000/test/registry sha256:2261ba058a15e3f21a467b1b02ea206d40cf0632d6b1aeee2ad200b662ed4aff 5.975MiB sha256:0e51cf12fb097201ded5b7daf648860d5a7ee806a7e9f6feaec3dc18f109d9dd 10.88.0.4:5000/test/registry:2 info: Mirroring completed in 110ms (93.01MB/s)
oc image mirror
コマンドはレジストリのログイン情報などについてはdockerの設定ファイル$HOME/.docker/config.json
を参照するので、レジストリに認証が必要な場合は事前に配置しておく必要があります。
同じ事はskopeoコマンドでも可能です。skopeoの場合は--src-creds
など認証情報もパラメータとしてパスできます。
$ skopeo copy docker://10.88.0.3:5000/test/registry:2 docker://10.88.0.4:5000/test2/registry:2 --src-tls-verify=false --dest-tls-verify=false Getting image source signatures Copying blob sha256:d6a5679aa3cfc52503fac8e2345790783537564df5af43355ec662d7703aacbf 2.28 MB / 2.28 MB [========================================================] 0s Copying blob sha256:ad0eac849f8f2014e20df11d611e4453c94a365a71eb3a90f02d8500391e1787 1.94 MB / 1.94 MB [========================================================] 0s Copying blob sha256:2261ba058a15e3f21a467b1b02ea206d40cf0632d6b1aeee2ad200b662ed4aff 5.98 MB / 5.98 MB [========================================================] 0s Copying blob sha256:f296fda86f10cfcb81d60d5bcb47a7784a8ec4876d6eac7fabd51f2a7e8694aa 369 B / 369 B [============================================================] 0s Copying blob sha256:bcd4a541795bb9981999ce8f6e2e1c92e55b0041256153d2458ff35fb9381063 212 B / 212 B [============================================================] 0s Copying config sha256:2e2f252f3c88679f1207d87d57c07af6819a1a17e22573bcef32804122d2f305 3.09 KB / 3.09 KB [========================================================] 0s Writing manifest to image destination Storing signatures