zoukankan      html  css  js  c++  java
  • Docker私有仓库registry的搭建及使用

    前言

    由于Docker Hub公共仓库很多时候使用这并不是很方便,大分部因为网络的问题可能拉取的时候会很慢或者拉取不到,所以搭建一个本地的私有仓库。

    准备

    由于此篇文章是在Kubernetes集群安装部署这篇文章的基础上补充docker私有仓库的搭建,所以安装机器配置过hosts的

    [root@k8s-master ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.44.60 etcd
    192.168.44.60 registry
    
    192.168.44.60 k8s-master
    192.168.44.61 k8s-slave01
    192.168.44.62 k8s-slave02

    搭建过程

    1、拉取并启动registry容器

    从Docker官方仓库里下载registry镜像

    [root@k8s-master ~]# docker pull registry

    通过该镜像启动容器

    [root@k8s-master ~]# docker run -d --name=my_registry -p 5000:5000 -v /opt/data/docker_registry:/var/lib/registry  --restart=always --privileged=true registry
    8eaed99a084999678795b9a6cedb8e57446f555dde6798756718f1b4decfee66
    参数解释:
    -v /opt/data/registry:/var/lib/registry:默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录挂载到容器,不过也不一定是这个目录,具体还是进入镜像内确定一下最好,也有可能是/var/lib/registry或者其他目录,如果不是的话重新启动一下容器。 -p 5000:5000 :端口映射。即本地5000端口,映射到registry中的5000端口。 –restart=always:在容器退出时总是重启容器,主要应用在生产环境。 –privileged=true:在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报类似权限错误。OSError: [Errno 13] Permission denied: '/tmp/registry/repositories/liibrary')或者(Received unexpected HTTP status: 500 Internal Server Error) –-name=my_registry:指定容器的名称,也可以-name my_registry。

    查看容器

    [root@k8s-master ~]# docker ps
    CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                    NAMES
    8eaed99a0849        docker.io/registry   "/entrypoint.sh /e..."   50 seconds ago      Up 49 seconds       0.0.0.0:5000->5000/tcp   my_registry

    由上可以看到,已经启动了一个容器,地址为:registry:5000也就是192.168.44.60:5000。

    修改daemon.json

    {
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
    "insecure-registries":["registry:5000"]
    }

     重启docker

    systemctl restart docker

    2、将本地镜像push到私有仓库中

    首先看一下现在机器上的镜像

    [root@k8s-master ~]# docker images
    REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
    docker.io/registry                                    latest              33fbbf4a24e5        12 days ago         24.2 MB
    docker.io/tomcat                                      latest              1a51cb5e3006        2 weeks ago         462 MB
    docker.io/nginx                                       latest              7042885a156a        2 weeks ago         109 MB
    docker.io/mysql                                       latest              102816b1ee7d        2 weeks ago         486 MB
    docker.io/redis                                       latest              5d2989ac9711        2 weeks ago         95 MB
    docker.io/centos                                      latest              1e1148e4cc2c        5 weeks ago         202 MB

    修改一下tomcat镜像的tag标识,然后查看镜像信息

    [root@k8s-master ~]# docker tag tomcat registry:5000/tomcat
    
    [root@k8s-master ~]# docker images
    REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
    docker.io/registry                                    latest              33fbbf4a24e5        12 days ago         24.2 MB
    docker.io/tomcat                                      latest              1a51cb5e3006        2 weeks ago         462 MB
    registry:5000/tomcat                                  latest              1a51cb5e3006        2 weeks ago         462 MB
    docker.io/nginx                                       latest              7042885a156a        2 weeks ago         109 MB
    docker.io/mysql                                       latest              102816b1ee7d        2 weeks ago         486 MB
    docker.io/redis                                       latest              5d2989ac9711        2 weeks ago         95 MB
    docker.io/centos                                      latest              1e1148e4cc2c        5 weeks ago         202 MB

    发现多了一个registry:5000/tomcat镜像,另外需要注意的是:修改了tag后的镜像若要删除,docker rmi后面不能用镜像ID了,需要用docker rmi registry:5000/tomcat。

    把上面修改tag后的镜像上传到私有仓库

    [root@k8s-master ~]# docker push registry:5000/tomcat
    The push refers to a repository [registry:5000/tomcat]
    10acf9008214: Pushed 
    f725cace5e8c: Pushed 
    70333c64c1a2: Pushed 
    a8586e8d29fb: Pushed 
    2d63501da7e5: Pushed 
    e6ae888dd260: Pushed 
    80917357f055: Pushed 
    bfc5dbc4d7a7: Pushed 
    b53b57a50746: Pushed 
    d2518892581f: Pushed 
    c581f4ede92d: Pushed 
    latest: digest: sha256:af0dc8139f8353ff2f10f8fe9fdf54a9d844f4c337b35dd40b6c0336d919e3f6 size: 2626

    验证是否将镜像上传到私有仓库

    [root@k8s-master ~]# curl -XGET http://registry:5000/v2/_catalog   
    {"repositories":["tomcat"]}
    [root@k8s-master ~]# curl -XGET http://registry:5000/v2/tomcat/tags/list              
    {"name":"tomcat","tags":["latest"]}

    查看映射的本地文件夹

    [root@k8s-master ~]# ls /opt/data/docker_registry/
    docker

    此时即便将docker images中列出来的 registry:5000/tomcat删掉,本地仓库中的registry:5000/tomcat也还是可以正常使用的。

    docker rmi registry:5000/tomcat

    如此,Kubernetes集群安装部署这篇文章中的master的配置才起到了作用(可以从本地仓库拉取所需镜像)。

    这样,也就可以在同一局域网内的其他机器上,从该私有仓库中pull下来该镜像:

    docker pull registry:5000/tomcat
    #如果没有配置hosts信息,可通过ip来拉取
    docker pull 192.168.44.60:5000/tomcat

    删除私有仓库镜像

    下载delete_docker_registry_image工具

    curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null

    更改目录权限,设置目录变量

    chmod 755 /usr/local/bin/delete_docker_registry_image
    export REGISTRY_DATA_DIR=/opt/data/docker_registry/docker/registry/v2

    删除私有仓库镜像

    delete_docker_registry_image -i tomcat
  • 相关阅读:
    HTML介绍
    python D41 前端初识
    mysql索引原理与查询优化
    python D41
    python D40 pymsql和navicat
    python D40 以及多表查询
    python D35 selectors模块
    python D35 I/O阻塞模型
    测试过程
    测试基础
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/10281879.html
Copyright © 2011-2022 走看看