• 05docker仓库---搭建本地仓库


    Docker仓库

    仓库(Repository)是集中存放镜像的地方,分别公有仓库和私有仓库.

    注册服务器是存放仓库的具体服务器。一个注册服务器上可以有多个仓库,每一个仓库里面可以有多个镜像。

    eg:仓库地址private-docker. com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。

    1:https://hub.docker.com/ 公共镜像仓库

    2:登录:docker login

    注册登录后:会在本地家目录创建一个 .docker/config.json ,保存用户的认证信息。

    2:搜索官方仓库中的镜像

    ubuntu@ubuntu:~$ docker search  centos
    NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    centos                             The official build of CentOS.                   5674                [OK]                
    ansible/centos7-ansible            Ansible on Centos7                              125                                     [OK]
    
    
    

    3:搭建本地私有仓库

    私有仓库,也就是在本地(局域网)搭建的一个类似公共仓库的东西,搭建好之后,我们可以将镜像提交到私有仓库中。

    环境

    准备两台安装好docker的服务器redhat7:
    服务端机器 (主机名为registry):docker私有仓库服务器,运行registry容器;
    测试端机器 (主机名为docker):普通的docker服务器,在这台服务器上下载一个测试镜像busybox,然后上传到registry服务器进行测试

    3.1:部署(registry服务端操作)

    1:下载镜像registry
    
    [root@registry ~]# docker search registry
    NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    registry                             The Docker Registry 2.0 implementation for s…   2758                [OK]                
    distribution/registry                WARNING: NOT the registry official image!!! …   58                                      [OK]
    stefanscherer/registry-windows       Containerized docker registry for Windows Se…   27                                      
    
    [root@registry ~]# [root@registry ~]# docker pull registry   
    [root@registry ~]# docker images   #查看pull下来的镜像
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    registry            latest              f32a97de94e1        8 months ago        25.8MB
    
    2:运行容器
    [root@registry ~]# docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
    4c98ff5d1023632154914e5e5d5d77b08fda702095ae769b5728ff7463fa2d65
    #-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
    # -v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
    # -p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
    #--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
    # --name registry:创建容器命名为registry,相当于别名
    
    3:测试镜像仓库中所有的镜像
    
    [root@registry ~]#  curl http://192.168.1.20:5000/v2/_catalog 
    {"repositories":[]}    #表示
    
    #192.168.1.20是registry的主机IP
    
    
    
    

    3.2:测试:docker 测试机上操作

    1:修改镜像源头并重启docker服务
    [root@docker ~]# cat  /etc/docker/daemon.json         
    {"registry-mirrors": 
    ["https://5f2jam6c.mirror.aliyuncs.com", 
    "http://hub-mirror.c.163.com"]
    }
    
    [root@docker ~]# systemctl restart docker  #重启docker服务
    
    2:下载busybox镜像
    [root@docker ~]# docker pull busybox
    [root@docker ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    busybox             latest              020584afccce        2 weeks ago         1.22MB
    
    3:为镜像打上标签
    [root@docker ~]# docker tag busybox:latest  192.168.1.20:5000/busybox:v1
    #192.168.1.20:5000/busybox:v1   是registry私有镜像服务器的IP地址和端口;
    
    #查看镜像
    [root@docker ~]# docker images
    REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
    192.168.1.20:5000/busybox   v1                  020584afccce        2 weeks ago         1.22MB
    busybox                     latest              020584afccce        2 weeks ago         1.22MB
    
    
    4:上传到镜像服务器
    [root@docker ~]# docker push 192.168.1.20:5000/busybox:v1   
    The push refers to repository [192.168.1.20:5000/busybox]
    Get https://192.168.1.20:5000/v2/: http: server gave HTTP response to HTTPS client
    #这里是报错了,docker镜像仓库暂不支持https,因为Docker与Docker Registry交互默认使用https,然而此处搭建的Docker Registry只提供http服务,所以当和Registry私有仓库交互时会失败,为了解决这个问题需要在启动Docker时配置Registry不安全选项
    
    # 修改/etc/docker/daemon.json
    
    [root@docker ~]# cat  /etc/docker/daemon.json 
    {"registry-mirrors":
    ["https://5f2jam6c.mirror.aliyuncs.com",
    "http://hub-mirror.c.163.com"],
    "insecure-registries": [ "192.168.1.20:5000"]   #添加这一行,192.168.1.20为registry的ip
    }
    
    [root@docker ~]# systemctl  restart docker    #重启docker服务
    [root@docker ~]# docker push 192.168.1.20:5000/busybox:v1
    The push refers to repository [192.168.1.20:5000/busybox]
    1da8e4c8d307: Pushed 
    v1: digest: sha256:679b1c1058c1f2dc59a3ee70eed986a88811c0205c8ceea57cec5f22d2c3fbb1 size: 527
    
    
    5:测试下载镜像
    [root@docker ~]# docker rmi $(docker images -aq) -f   #删除所有镜像
    [root@docker ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    
    
    #从registry服务器上下载busybox镜像
    [root@docker ~]# docker pull 192.168.1.20:5000/busybox:v1    
    v1: Pulling from busybox
    0f8c40e1270f: Pull complete 
    Digest: sha256:679b1c1058c1f2dc59a3ee70eed986a88811c0205c8ceea57cec5f22d2c3fbb1
    Status: Downloaded newer image for 192.168.1.20:5000/busybox:v1
    192.168.1.20:5000/busybox:v1
    
    5:列出registry的所有镜像
    [root@docker ~]# curl  http://192.168.1.20:5000/v2/_catalog
    {"repositories":["busybox"]}
    
    6:列出busybox镜像有哪些tag
    [root@docker ~]# curl  http://192.168.1.20:5000/v2/busybox/tags/list
    {"name":"busybox","tags":["v1"]}
    
    
    
  • 相关阅读:
    C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
    typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
    Source Insight 常用设置和快捷键大全
    关闭SourceInsight的大括号自动缩进
    MDK中One ELF Section per Function选项功能探究【转载】
    Application.DoEvents()的作用
    C#中Invoke的用法
    C# 委托的应用1:将方法作为参数传递给另一个方法[转]
    C#之委托(函数参数传递)【转】
    sk-learn 选择正确的估算器
  • 原文地址:https://www.cnblogs.com/zhoujun007/p/11872609.html
Copyright © 2020-2023  润新知