zoukankan      html  css  js  c++  java
  • Docker 系列四(自定义仓库).

    一、Docker hub 交互

        Docker hub 是 Docker 官方维护的一个公共仓库,大部分需求都可以通过在 Docker hub 中直接下载镜像来完成。接下来,来看一下怎么与 Docker hub 进行交互,包括登陆登出以及将本地镜像推送到 Docker hub 等...

    注册https://hub.docker.com/ 注册的时候需要翻墙~~

    登陆:docker login 

    登出:docker logout

    搜索镜像

    docker search [name] --filter=stars=30
                         --filter=stars=N (参数可以指定仅显示收藏数量为 N 以上的镜像)

    拉取镜像:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

    推送镜像

    #1、打镜像标签(username 表示Docker账号用户名)
    docker tag REPOSITORY[:tag] username/REPOSITORY[:tag]
    docker tag myenv:1.0 jmcui/myenv:1.0
    
    #2、推送到Docker hub
    docker push username/REPOSITORY[:tag]
    docker push jmcui/myenv:1.0

    二、创建 Docker 私库(基于HTTP)

        在企业中把内部的一些工具包放入 Nexus 中是比较常见的做法,最新版本 Nexus3.x 全面支持 Docker 的私有镜像。所以使用 Nexus3.x 一个软件来管理 Docker , Maven , Yum , PyPI 等是一个明智的选择。

    1、使用 Docker 安装 Nexus

    docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 --mount src=nexus-data,target=/nexus-data sonatype/nexus3
    ## 8081:nexus3网页端
    ## 8082:docker(hosted)私有仓库,可以pull和push
    ## 8083:docker(proxy)代理远程仓库,只能pull 

    2、登陆

        访问 http:// ip地址:8081 默认账号:admin,默认密码:admin123

     3、创建私有仓库

        页面上方的齿轮按钮 —> Repository —> Repositories —> Create repository —> 选择 docker (hosted)

          还可以创建一个 docker (proxy) 类型的仓库链接到 DockerHub 上。再创建一个 docker (group) 类型的仓库把刚才的 hosted 与 proxy 添加在一起。主机在访问的时候默认下载私有仓库中的镜像,如果没有将链接到 DockerHub 中下载并缓存到 Nexus 中。

    4、配置支持 HTTP

        Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,(Ubuntu 16.04+, Debian 8+, centos 7)在 /etc/docker/daemon.json 中写入如下内容:

    {
      "registry-mirrors": [
        "https://registry.docker-cn.com"
      ],
      "insecure-registries": [
        "xx.xx.xx.xx:8082"
      ]
    }

         重启 Docker :

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart docker

    5、验证效果

    #1、登陆
    docker login xx.xx.xx.xx:8082
    #2、私库标签
    docker tag myenv:1.0  xx.xx.xx.xx:8082/myenv
    #3、推送镜像到私有仓库
    docker push xx.xx.xx.xx:8082/myenv
    #4、查看私有仓库镜像,验证是否推送成功
    curl xx.xx.xx.xx:8082/v2/_catalog
    #5、拉取私有仓库镜像
    docker pull xx.xx.xx.xx:8082/myenv

    三、私有仓库高级配置(HTTPS 认证)

        下面,我们将要搭建的私有仓库地址为 docker.domain.com,使用 openssl 自行签发 docker.domain.com 的站点 SSL 证书,并用 Docker Compose 搭建一个拥有权限认证、TLS 的私有仓库。

        由于是在 Centos 7 下玩的 Docker ,首先要解决 Docker Compose 安装的问题。

    1、安装 Docker Compose

    x86_64 架构的 Linux 建议安装如下:

        从 官方 GitHub Release 处选择最新版本安装,类似如下~

    #1、直接下载对应的二进制包
    curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    #2、添加环境变量
    export PATH=$PATH:/usr/local/bin/docker-compose
    
    #卸载
    sudo rm /usr/local/bin/docker-compose

    ARM 架构的 Linux 建议安装如下:

    #1、检查linux有没有安装python-pip包
     pip -V
    #2、执行安装 epel-release 包
     yum -y install epel-release
    #3、执行安装 python-pip 包
     yum install python-pip
    #4、对安装好的pip进行升级
     pip install --upgrade pip
    #5、再次验证pip是否安装成功
     pip -V
    #6、安装Docker-Compose(失败的话可重复多次)
     pip --default-timeout=300 install -U docker-compose --ignore-installed requests
    #7、检查docker-compose 安装
     docker-compose -version

    #卸载
    sudo pip uninstall docker-compose
    yum -y remove python-pip
    yum -y remove epel-release

    bash 补全命令 :sudo curl -L https://raw.githubusercontent.com/docker/compose/1.22.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose

     

    直接用容器来执行Docker Compose:

    curl -L https://github.com/docker/compose/releases/download/1.22.0/run.sh > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

    2、HTTPS 认证

        因为对 HTTPS 的那些证书认证什么的,着实没有什么大的概念,就不在这里大夸其辞了。国内各大云服务商均提供了免费的站点证书,常见的做法是:申请个域名,绑定服务器IP,然后下载云服务提供的证书,添加认证即可。

        这里的做法是使用 openssl 自行签发 docker.domain.com 的站点 SSL 证书,也是看着步骤,一步步傻瓜式操作下来的,就不献丑了。具体步骤可以参考:https://yeasy.gitbooks.io/docker_practice/content/repository/registry_auth.html

        至于坑,那还是有的,比如上面的 Docker Compose 安装就折腾了好久。另外需要注意的是,最后生成的文件都要放在 /etc/docker 相关目录下,目录结构如下:

    参考资料:《Docker — 从入门到实践》

  • 相关阅读:
    在实践中培养学生学习软件工程的兴趣
    软件工程课程设计指导随笔
    软件工程——个人总结
    软件工程第二次作业——结对编程
    个人博客作业三:微软小娜APP的案例分析
    嵌入式软件设计第12次实验报告
    嵌入式软件设计第11次实验报告
    嵌入式软件设计第09实验报告
    嵌入式软件设计第10次实验报告
    嵌入式软件设计第7次实验报告8
  • 原文地址:https://www.cnblogs.com/jmcui/p/9362633.html
Copyright © 2011-2022 走看看