如何立即从docker repo中拉出所有docker容器图像?

时间:2017-06-03 02:35:18

标签: docker containers

我有一个私人码头仓库,其中我存储了10个容器图像。我想把所有图像都拉到一台机器上。有没有办法可以用一个命令从回购中提取所有图像?像

这样的命令
docker pull  xx.xx.com/reponame/* 

在研究时我找到了拉出单个图像的所有标签的方法;但到目前为止在所有图像上都没有运气

7 个答案:

答案 0 :(得分:3)

试试这个(它将更新没有直接连接到它们的运行容器的图像)

docker images | awk '(NR>1) && ($2!~/none/) {print $1":"$2}' | xargs -L1 docker pull

首先尝试这一行,看看将覆盖哪些图像:

docker images | awk '(NR>1) && ($2!~/none/) {print $1":"$2}'

答案 1 :(得分:2)

在shell脚本下运行,以一次从Docker注册表中提取带有所有标签的所有DOCKER图像,

外壳脚本:

#/ bin / bash 设x Registry =“注册表名称/ ip:端口” repos = curl -u cloudfx:cFx2018Aug http://$registry/v2/_catalog?n=300 | jq '.repositories[]' | tr -d '"' 回购$ repos;做    docker pull --all-tags $ registry / $ repo; 完成

答案 2 :(得分:2)

使用filter标记来过滤存储库列表。虽然这只会拉出您主机中已经存在的那些。

for image in $(docker images --format "{{.Repository}}"); do docker pull $image; done

答案 3 :(得分:1)

可以使用docker-compose“破解”此内容。

# docker-compose.yml
version: '3.1'
services:
  a:
    image: a-image
  b:
    image: b-image
  c:
    image: c-image
# .....

docker-compose pull --parallel

答案 4 :(得分:1)

易。

安装 jq 来解析JSON,编辑REGISTRY变量并运行此脚本:

#!/bin/sh

REGISTRY="http://registry:5000"

for repo in $(curl -s $REGISTRY/v2/_catalog | jq -r '.repositories[]') ; do
    for tag in $(curl -s $REGISTRY/v2/$repo/tags/list | jq -r '.tags[]') ; do
        docker pull $REGISTRY/$repo:$tag
    done
done

有关Docker Registry API的详细信息: https://github.com/docker/distribution/blob/master/docs/spec/api.md

答案 5 :(得分:1)

关于命令docker pull的docker文档,您可以使用选项

--all-tags

下载存储库中所有已标记的图像。

您的情况应该是:

docker pull --all-tags  xx.xx.com/reponame 

答案 6 :(得分:0)

不确定什么类型的命令是单个命令,单行?

for repo in repo1 repo2 repo3; do docker pull xx.xx.com/$repo; done