常用的镜像库

仓库名仓库地址
DockerHub 镜像仓库https://hub.docker.com
google 镜像仓库https://gcr.io/google-containers https://gcr.io/kubernetes-helm https://gcr.io/google-containers/pause
coreos 镜像仓库https://quay.io/repository/
Elastic 镜像仓库https://www.docker.elastic.co/
RedHat 镜像仓库https://access.redhat.com/containers
阿里云 镜像仓库https://cr.console.aliyun.com
华为云 镜像仓库https://console.huaweicloud.com/swr

国内镜像源


部分国外镜像仓库无法访问,但国内有对应镜像源,可以从以下镜像源拉取到本地然后重改tag即可。

阿里云镜像仓库

注意:可以拉取k8s.gcr.io镜像

#示例
docker pull k8s.gcr.io/pause:3.2

#改为
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2

dockerhub镜像仓库

注意:可以拉取k8s.gcr.io镜像

#示例
docker pull k8s.gcr.io/pause:3.1
docker pull k8s.gcr.io/kube-apiserver:v1.17.3

#改为
docker pull googlecontainersmirrors/pause:3.1
docker pull googlecontainersmirrors/kube-apiserver:v1.17.3

七牛云镜像仓库

注意:可以拉取quay.io镜像

#示例
docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0

#改为
docker pull quay-mirror.qiniu.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0

dockerhub搜索镜像

很多国外镜像已经有热心网友传到了dockerhub,例如gcr.io/kubernetes-helm/tiller:v2.16.5这个镜像,直接搜索关键字,找到排序靠前的然后在dockerhub确认并拉取即可.

# docker search tiller
NAME                                    DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
jessestuart/tiller                      Nightly multi-architecture (amd64, arm64, ar  19                                      [OK]
sapcc/tiller                            Mirror of https://gcr.io/kubernetes-helm/til  9                                       
ist0ne/tiller                           https://gcr.io/kubernetes-helm/tiller           ....      

dockerhub镜像国内加速

阿里云镜像加速

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com"]
}
EOF

daocloud dockerhub镜像加速

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

西北农林大学dockerhub镜像加速

{
  "registry-mirrors": ["https://dockerhub.mirrors.nwafu.edu.cn/"]
}

华为云dockerhub镜像加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
    "registry-mirrors": ["https://7bafc985f90c43b887a96c2b846cf984.mirror.swr.myhuaweicloud.com"]
}
EOF

后续操作

重新启动 Docker 服务:

sudo systemctl daemon-reload && sudo systemctl restart docker

验证加速器是否生效
执行 docker info,如果从结果中看到了如下内容,说明配置成功。

$ docker info | grep Mirrors -A1
Registry Mirrors:
 https://uyah70su.mirror.aliyuncs.com/

#验证镜像拉取速度
$ time docker pull centos

搭建个人仓库


我们也可以在dockerhub或阿里云创建个人仓库,把需要的最新版本镜像从google仓库push到个人仓库,一般有几下几种方法.

第一步:购买云服务器

购买1台能同时访问国外和国内网络的云服务器,使用docker login登录dockerhub或阿里云仓库,docker push命令推送上去然后再拉取到本地即可。
如果不想购买服务器又能够访问国外网络,建议使用google提供的cloud shell:

https://console.cloud.google.com/cloudshell

它类似一个永久免费的拥有5G存储空间的linux服务器,能够执行所有docker命令和bash命令,最重要的是它能够访问全球网络。

第二步:Travis CI推送镜像

使用travis CI+GitHub将镜像push到国内镜像仓库。

第三步:Github镜像构建功能

使用github的dockerfile构建功能,将镜像构建到国内仓库。

Travis CI推送dokcer镜像


下面介绍第2种方法,使用travis CI+GitHub的方法将镜像拉取到阿里云或者dockehub。

创建github仓库

首先登录github创建一个仓库,名称自定义,仓库包含如下2个文件:

  • img-list.txt 外网镜像列表文件
  • .travis.yaml travisCI自动构建文件

示例仓库:https://github.com/willzhang/pull-docker-images
.travis.yaml 内容如下,主要从国外镜像仓库pull镜像,打tag,并push到阿里云或dockerhub.

language: bash

services:
  - docker

env:
  global:
    #change the registry name and username/password to yourself's.
    - DOCKER_HUB=willdockerhub
    - ALI_REGISTRY=registry.cn-shenzhen.aliyuncs.com/images_mirror

before_script:
  - docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
  - docker login $ALI_REGISTRY -u $ALI_USERNAME  -p $ALI_PASSWORD

script:
  - echo "start pull and retag and push"
  - |
    for image in $(cat img-list.txt)
    do
        image_name=${image##*/}
        docker pull $image
        docker tag $image $DOCKER_HUB/$image_name
        docker tag $image $ALI_REGISTRY/$image_name
        
        # push到dockerhub
        docker push $DOCKER_HUB/$image_name
        # push到阿里云仓库
        docker push $ALI_REGISTRY/$image_name
    done

img-list.txt主要包含国内无法拉取的镜像列表,注意必须为完整镜像路径和名称,示例如下:

gcr.io/google-containers/kube-apiserver-amd64:v1.12.0
quay.io/external_storage/nfs-client-provisioner:latest

.travis.yaml文件监测github仓库的代码变动,当有代码变动时比如img-list.txt写入新的镜像列表时将触发tarvis的自动构建
这里需要登录阿里云或dockerhub才能执行docker push操作,其中$ALI_USERNAME这类变量在TravisCI管理界面定义好即可。

TravisCI配置

访问travis官网: https://www.travis-ci.com, 使用github账号登录。

开启需要进行自动化构建的仓库即可:

另外需要点击右上角的more options —》settings选项,定义写在.travis.yaml中的账号密码等敏感参数。

当对github仓库执行git commit、git push操作时将自动触发构建,执行仓库中的脚本,这里的构建结果如下:

登录阿里云或dockerhub查看,imagepath.txt 列表中的镜像已经成功被push上来:

注意:push到阿里云的镜像默认为私有的,可以手动改为公开的。


日常拉取镜像方法

修改img-list.txt,写入需要拉取的镜像完整路径,保存后travis-CI监测到仓库代码变动,自动触发构建,几分钟后镜像就会被自动拉取到个人仓库。

参考

最后修改:2020 年 10 月 13 日 09 : 39 PM
如果觉得我的文章对你有用,请随意赞赏