zoukankan      html  css  js  c++  java
  • Docker私有仓库搭建

    起因

    众所周知的原因,我们访问 hub.docker.com 很慢,需要使用加速镜像,具体如何使用,请看官自行搜索,这里不做重点说明,这里要说的是另外一种加速的方法:搭建私有镜像。

    环境说明

    受制于开发环境,我在 Windows Server 2016 Standard 中构建了很多 Images, 计划在hyper-v中创建debian系统(纯命令版本,无GUI),在debian中搭建私有的docker镜像仓库,然后将Host(Windows Server 2016 Standard)中构建的镜像上传到 debian 中, debian中仓库中存放的镜像路径使用-v操作映射到debian系统的 root/registry 路径下。

    1. Windows Server 2016 Standard 安装(略)

    2. Hyper-v 安装(略)

    3. 在hyper-v中安装debian并配置

      1. 首先在hyper-v中新建一个虚拟网络交换机,类型选“外部”,选中物理网卡点确定;
        虚拟网络交换机

      2. 下载最小的debian镜像(ISO文件),大概300多MB,设置启动镜像后,还要在hyper-v中选中虚拟机,在设置里面将安全启动项勾掉
        安全启动勾掉

      3. 安装debian系统(略)

      4. 配置sudo
        由于安装的是网络版镜像,安装好的系统没有sudo,执行sudo command的时候会报sudo: command not found的错误,解决方案如下:

        1. 切换到root用户,输入root口令(安装debian的时候设置的)
          $ su
          
        2. 更新软件源并安装sudo
          $ apt update
          $ apt install sudo
          
        3. 执行visudo修改sudoers(推荐),还有一种方式是 vi /etc/sudoers(不推荐)
          ...
          # User privilege specification
          root       ALL=(ALL) ALL
          youruser   ALL=(ALL) ALL
          ...
          
        4. 不需要重启即可使用。
      5. 设置debian系统网卡

        $ sudo vi /etc/network/interfaces
        

        将动态获取地址注释掉,用如下代码代替

        ...
        # The primary network interface
        # iface eth0 inet dhcp
        iface eth0 inet static
        address 192.168.0.90
        netmask 255.255.255.0
        gateway 192.168.0.1
        

        重新启动

        $ sudo reboot
        
    4. debian中安装docker

      1. 我用的是一键安装脚本
        $ curl -fsSL get.docker.com -o get-docker.sh
        $ sudo sh get-docker.sh
        
      2. 测试安装
        $ sudo docker info
        

    开始搭建私有仓库(registry)

    1. 创建并运行registry
      有了docker,一切都变得梦幻般美好,一个命令:

      $ sudo docker run -d -p 5000:5000 -v /root/registry:/var/lib/registry  --restart always registry:2
      

      解释一下参数:

      • -d 后台运行;
      • -p 5000:5000 端口映射 主机的5000端口(debian系统):容器的5000端口
      • -v 路径map,将主机的 /root/registry 路径 map 到容器的 /var/lib/registry
      • --restart always ,恩,这个解释起来优点麻烦,在我这里的意思是开机启动,官方的解释见Start containers automatically

      这样,私有 registry 就运行起来了,且支持开机启动。

    2. 在 windows server standard 中设置虚拟机为自动启动
      虚拟机自动启动
      这样当物理机(windows server 2016)启动时,debian虚拟机会自动启动,debian系统内的docker 仓库也会自动启动

    3. 使用

      1. tag 镜像

        PS > docker tag windowsservercore-demo 192.168.0.90:5000/windowsserver-core-demo
        
      2. 上传镜像

        1. 先要修改配置文件daemon.json
          windows下的路径是 c:/programdata/docker/config/daemon.json, linux下的路径 /etc/docker/daemon.json
          在配置文件中增加节点:
          {
              "insecure-registries": ["192.168.0.90:5000"]
          }
          
        2. restart docker
          PS > restart-service *docker*
          
        3. 上传
          PS > docker push 192.168.0.90:5000/windowsserver-core-demo
          
      3. 用 curl 查看仓库中的镜像

        PS > curl 192.168.0.90:5000/v2/_catalog
        

        或者直接用网页打开 http://192.168.0.90:5000/v2/_catalog ,结果是一样的

      4. 下载镜像(局域网内可用)

        PS > docker pull 192.168.0.90:5000/windowsserver-core-demo
        

    参考资料

  • 相关阅读:
    C# Socket UDP 案例
    精通MVC 3 框架Controller Extensibility
    python一些DEMO总结
    影响ASP.NET程序性能的因素
    Django实战
    EF 4.3 CodeBased 数据迁移演练
    jQuery Gallery Plugin在Asp.Net中使用
    Action Func委托+异步委托
    使用CGO封装Windows API
    每日一例,练就编程高手
  • 原文地址:https://www.cnblogs.com/zanpen2000/p/7429433.html
Copyright © 2011-2022 走看看