zoukankan      html  css  js  c++  java
  • docker--docker仓库

    8 docker仓库

    Docker仓库(Repository)类似与代码仓库,是Docker集中存放镜像文件的地方。

    8.1 docker hub

    1、打开https://hub.docker.com/
    2、注册账号:略
    3、创建仓库(Create Repository):略
    4、设置镜像标签
    docker tag local‐image:tagname new‐repo:tagname(设置tag)
    eg:docker tag hello‐world:latest 108001509033/test‐hello‐world:v1
    docker tag hello-world:latest eadela/hello-world:v1
    5、登录docker hub
    docker login(回车,输入账号以及密码)
    6、推送镜像
    docker push new‐repo:tagname
    eg:docker push 108001509033/test‐hello‐world:v1
    docker push eadela/hello-world:v1
    Error response from daemon: manifest for hello-world:v1 not found: manifest unknown: manifest unknown
    加登陆账号昵称
    Error: No such image: eadela_docker_test/hello-world
    加标签
    denied: requested access to the resource is denied
    在镜像前加登陆名

    8.2 阿里云

    略:参考官方文档。

    步骤:
    1、创建阿里云账号
    2、创建命名空间
    3、创建镜像仓库
    4、操作指南
    $ sudo docker login ‐‐username=[账号名称] registry.cn‐
    hangzhou.aliyuncs.com
    $ sudo docker tag [ImageId] registry.cn‐
    hangzhou.aliyuncs.com/360buy/portal:[镜像版本号]
    $ sudo docker push registry.cn‐hangzhou.aliyuncs.com/360buy/portal:[镜像版
    本号]

    8.3 搭建私有仓库

    8.3.1 构建私有仓库

      1、启动Docker Registry,使用Docker官方提供的Registry镜像就可以搭建本地私有镜像
    仓库,具体指令如下。
    $ docker run ‐d 
      ‐p 5000:5000 
      ‐‐restart=always 
      ‐‐name registry 
      ‐v /mnt/registry:/var/lib/registry 
      registry:2
    指令参数说明:
    ‐d:表示在后台运行该容器;
    ‐p 5000:5000:表示将私有镜像仓库容器内部默认暴露的5000端口映射到宿主机的5000端

    ‐‐restart=always:表示容器启动后自动启动本地私有镜像仓库
    ‐‐name registry:表示为生成的容器命名为registry
    ‐v /mnt/registry:/var/lib/registry:表示将容器内的默认存储位
    置/var/lib/registry中的数据挂载到宿主机的/mnt/registry目录下,这样当容器销毁
    后,在容器中/var/lib/registry目录下的数据会自动备份到宿主机指定目录
    小提示:
    Docker Registry目前有v1和v2两个版本,v2版本并不是v1版本的简单升级,而是在很多
    功能上都有了改进和优化。v1版本使用的是Python开发的,而v2版本是用go语言开发的;
    v1版本本地镜像仓库容器中数据默认挂载点是/tmp/registry,而v2版本的本地镜像仓库容
    器中数据默认挂载点是/var/lib/registry
    2、重命名镜像,之前推送镜像时,都是默认推送到远程镜像仓库,而本次是将指定镜像推送
    到本地私有镜像仓库。由于推送到本地私有镜像仓库的镜像名必须符合“仓库IP:端口
    号/repository”的形式,因此需要按照要求修改镜像名称,具体操作指令如下。
    $ docker tag hello‐world:latest localhost:5000/myhellodocker
    3、推送镜像,本地私有镜像仓库搭建并启动完成,同时要推送的镜像也已经准备就绪后,就
    可以将指定镜像推送到本地私有镜像仓库了,具体操作指令如下
    $ docker push localhost:5000/myhellodocker
    4、查看本地仓库镜像
    http://localhost:5000/v2/myhellodocker/tags/list  (注意:使用该地址时注意镜
    像名称)
    http://192.168.9.23:5000/v2/myhellodocker/tags/list
    由于做了目录挂载,因此可以在本地的该目录下查看:
    /mnt/registry/docker/registry/v2/repositories
    推送:不需要(不安全)

    8.3.2 配置私有仓库认证

     一、配置私有仓库认证
    1、查看Docker Registry私有仓库搭建所在服务器地址:ifconfig
    例如:服务器地址为:192.168.200.141
    2、生成自签名证书(在home目录下执行上述指令后)
    要确保Docker Registry本地镜像仓库的安全性,还需要一个安全认证证书,来保证其他
    Docker机器不能随意访问该机器上的Docker Registry本地镜像仓库,所以需要在搭建
    Docker Registry本地镜像仓库的Docker主机上先生成自签名证书(如果已购买证书就无需
    生成),具体操作指令如下。
    $ mkdir registry && cd registry && mkdir certs && cd certs
    $ openssl req ‐x509 ‐days 3650 ‐subj '/CN=192.168.200.162:5000/' 
        ‐nodes ‐newkey rsa:2048 ‐keyout domain.key ‐out domain.crt
    指令参数说明:
    ‐x509:x509是一个自签发证书的格式
    ‐days 3650:表示证书有效期
    192.168.197.141:5000:表示具体部署Docker Registry本地镜像仓库的地址和端口
    rsa:2048:是证书算法长度
    domain.key和domain.crt:就是生成的证书文件
    3、生成用户名和密码
    在Docker Registry本地镜像仓库所在的Docker主机上生成自签名证书后,为了确保
    Docker机器与该Docker Registry本地镜像仓库的交互,还需要生成一个连接认证的用户名
    和密码,使其他Docker用户只有通过用户名和密码登录后才允许连接到Docker Registry本
    地镜像仓库
    $ cd .. && mkdir auth
    $ docker run ‐‐entrypoint htpasswd registry:2 ‐Bbn ruanwen 123456 >
    auth/htpasswd
    4、启动Docker Registry本地镜像仓库服务(将之前创建的容器删除)
    $ docker run ‐d 
      ‐p 5000:5000 
      ‐‐restart=always 
      ‐‐name registry 
      ‐v /mnt/registry:/var/lib/registry 
      ‐v `pwd`/auth:/auth 
      ‐e "REGISTRY_AUTH=htpasswd" 
      ‐e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
      ‐e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
      ‐v `pwd`/certs:/certs 
        ‐e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt 
      ‐e REGISTRY_HTTP_TLS_KEY=/certs/domain.key 
      registry:2
    5、配置Docker Registry访问接口
    完成Docker Registry本地镜像仓库服务启动后,还需要在搭建了Docker Registry本地镜
    像仓库所在的Docker主机上配置供其他Docker机器访问的接口,具体指令如下:
    $ sudo mkdir ‐p /etc/docker/certs.d/192.168.200.162:5000
    $ sudo cp certs/domain.crt /etc/docker/certs.d/192.168.200.162:5000
    6、Docker Registry私有仓库使用登记
    在Docker机器终端使用sudo vim /etc/docker/daemon.json命令编辑daemon.json文
    件,在该文件中添加如下内容
    {"insecure‐registries":["192.168.200.162:5000"]}
    7、重启并加载docker配置文件
    $ sudo /etc/init.d/docker restart
    二、验证测试
    1、装备镜像
    $ docker tag hello‐world:latest 192.168.200.162:5000/myhelloworld
    2、推送镜像
    $ docker push 192.168.200.141:5000/myhelloworld
    送过程中出现错误,信息提示为:no basic auth credentials(即没有通过身份验
    证),所以无法进行推送,这也就说明身份验证的配置有效。要想成功推送,需要先登录成
    功后再推送
    3、登录Docker Registry镜像仓库
    $ docker login 192.168.200.162:5000
    4、再次推送
    $ docker push 192.168.200.139:5000/myhelloworld
    5、结果验证
    由于做了目录挂载,因此可以在本地的该目录下查看:
    /mnt/registry/docker/registry/v2/repositories
    docker run -d 
    -p 5000:5000
    --restart=always
    --name registry
    -v /mnt/registry:/var/lib/registry
    -v `pwd` /auth:/auth
    -e "REGISTRY_AUTH=htpasswd"
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
    -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
    -v `pwd` /certs:/certs
    -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
    -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key
    registry:2
    docker: invalid reference format.
    See 'docker run --help'.
    网上方法:
    1 docker镜像的名字中不能包含大写字母,改成小写
    2 docker run –p 8080:80 –d nginx 符号错误 “-” 其实为"-"

     

      没有英汉互译结果
      请尝试网页搜索

  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/eadela/p/11926794.html
Copyright © 2011-2022 走看看