美文网首页
Docker 搭建私有仓库

Docker 搭建私有仓库

作者: 溯水心生 | 来源:发表于2018-11-25 16:41 被阅读38次

    [TOC]

    一、前提和准备条件

    搭建私有仓库需要以下条件:

    • 1.已安装Docker服务的服务端
    • 2.测试docker镜像拉取的客户端
    • 3.2台测试机都需安装docker服务
    • 4.配置好了镜像加速信息
    机器名 ip 功能
    docker-registry 10.18.33.90 docker私有仓库服务器
    docker-app 10.18.33.88 运行docker服务的普通服务器

    二、docker-registry搭建私有仓库

    1.拉取仓库镜像

    在docker-registry[10.18.33.90]服务器执行一下命令,拉取仓库的镜像:

    [root@localhost DockerDB]# docker pull registry
    

    2.运行私有仓库

    在docker-registry[10.18.33.90]服务器执行一下命令,来启动一个私有仓库的容器

    docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
    

    执行成功后,查看容器是否启动成功

    [root@localhost DockerDB]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    edd6c0d7ca9b        registry:latest     "/entrypoint.sh /etc…"   3 seconds ago       Up 2 seconds        0.0.0.0:5000->5000/tcp   registry
    
    

    如果成功执行,则表示我们的docker私有仓库搭建成功。

    下面对这条命令的部分内容做下说明。

    /registry表示宿主机目录,该目录如果不存在会自动创建。

    docker -v 宿主机目录:容器目录

    解释:

    把宿主机的目录挂载到容器中

    或者把docker 容器中某目录的数据 加载到 宿主机的某个目录

    这样做的目的是为了防止docker私有仓库这个容器被删除时,仓库里的镜像也会被删除。

    3.查询当前私有仓库信息

    查询一下当前建立的私有仓库的信息,windows请直接访问以下地址:

    http://10.18.33.90:5000/v2/_catalog
    

    结果信息如下:


    image

    如果在Linux上,请运行如下命令来获得当前私有仓库信息:

    [root@localhost ~]# curl -X GET http://10.18.33.90:5000/v2/_catalog
    {"repositories":[]}
    
    

    第一次建立私有仓库,查询结果应该是没有镜像信息的。

    三、docker-app注册私有仓库信息

    1.daemon.json配置文件

    • linux配置

    修改docker的配置文件daemon.json文件添加私有仓库信息,daemon.json在/etc/docker/目录下
    添加如下信息:

    "insecure-registries":["10.18.33.90:5000"]
    

    其中 IP为docker-registry的IP,5000端口位registry容器映射对外的端口
    完整的daemon.json信息如下:

    {
      "registry-mirrors": ["https://7e2zsv7s.mirror.aliyuncs.com"],
      "insecure-registries":["10.18.33.90:5000"]
    }
    
    

    重启docker服务

    [root@localhost docker]# systemctl daemon-reload;
    [root@localhost docker]# systemctl restart docker;
    
    • windows配置
      在docker图标右键,打开settings,定位到Daemon菜单下:


      windows修改配置

      打开Advanced,添加docker私有仓库信息,并点击应用,等待docker重启成功。

    四、推送镜像到私有仓库

    推送镜像到私有仓库,可以是已有镜像的重新封装,也可以是你的项目镜像,前提是你已经正确构建了一个可用的镜像。

    1.重命名已经镜像信息Tag标签

    列举已构建成功的镜像信息:

    PS E:\WorkSpace-GW\image-gateway\mysql> docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    db                  0.0.1               3924615d26ec        3 minutes ago       366MB
    mariadb             latest              b468922dbbd7        About an hour ago   366MB
    PS E:\WorkSpace-GW\image-gateway\mysql>
    

    将已有的镜像信息重新Tag命名

    PS E:\WorkSpace-GW\image-gateway\mysql> docker tag 3924615d26ec 10.18.33.90:5000/db:v1.0
    

    TIPS:

    重命名镜像必须遵循: 私有仓库IP:端口/仓库名

    2.将重名的镜像推送到私有仓库

    执行如下命令推送镜像到私有仓库

    PS E:\WorkSpace-GW\image-gateway\mysql> docker push 10.18.33.90:5000/db
    

    推送成功后访问仓库,查看镜像是否推送成功,访问私有镜像仓库服务

    http://10.18.33.90:5000/v2/_catalog
    

    可以看到db已经被推送到了私有仓库

    仓库信息

    五、从私有仓库拉取镜像

    测试docker-app客户端拉取镜像,先删除客户端docker的相关的镜像内容,如下图所示:

    PS E:\WorkSpace-GW\image-gateway\mysql> docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    PS E:\WorkSpace-GW\image-gateway\mysql>
    
    

    1.拉取一个私有仓库的镜像

    执行如下命令,拉取刚推送私有镜像 db并创建一个容器

    PS E:\WorkSpace-GW\image-gateway\mysql> docker run --name gatewaydb -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -idt 10.18.33.90:5000/db:v1.0
    
    2.查看容器启动情况和进入容器

    查看容器启动情况

    PS E:\WorkSpace-GW\image-gateway\mysql> docker ps
    CONTAINER ID        IMAGE                      COMMAND                  CREATED              STATUS              PORTS                    NAMES
    a9a3ec4f309e        10.18.33.90:5000/db:v1.0   "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       0.0.0.0:3307->3306/tcp   gatewaydb
    

    进入容器查看启动情况:

    PS E:\WorkSpace-GW\image-gateway\mysql> docker exec -it gatewaydb /bin/bash
    root@a9a3ec4f309e:/#
    

    相关文章

      网友评论

          本文标题:Docker 搭建私有仓库

          本文链接:https://www.haomeiwen.com/subject/gqgpqqtx.html