Docker:仓库[未完待续]

Posted 杜先生的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker:仓库[未完待续]相关的知识,希望对你有一定的参考价值。

1、仓库介绍

  仓库(repository)用来集中管理Docker镜像,支持镜像分发和更新。

  目前世界上最大最知名的公共仓库是Docker官方的Docker Hub,国内比较知名的有:Docker Pool、阿里云仓库等。

 

2、镜像仓库

  仓库下面包含着一组镜像,镜像之间用标签(tag)区分,一个完整的镜像路径通常由服务器地址、仓库名称和标签组成,如:

  registry.hub.docker.com/official/ubuntu:14.04

  2.1 上传镜像

    docker push localhost:5000/official/ubuntu:14.04

    上述命令是向本地仓库上传镜像,如果不写仓库地址默认想docker官方仓库上传镜像,向官方仓库上传镜像需要登录账户,上传的目标是自己的仓库。

  2.2 下载镜像

    docker pull ubuntu:14.04

    不加tag默认下载所有ubuntu仓库下的官方镜像。

  2.3 查询镜像

    docker search localhost:5000/ubuntu    #仓库开发者需要实现查询功能

    

3、构建私有仓库

  Docker私有服务(private registry)用来建设私有仓库,部署私有仓库的优点:

    可独立开发和运维私有仓库;

    节省带宽资源

    有独立的账户管理系统

    增加了定制化功能

  搭建私有仓库之前要部署Docker Private Registry,命令如下:

    docker run -d --hostname localhost --name registry-v2 \

    -v /opt/data/distribution:/var/lib/registry/docker/registry/v2 \

    -p 5000:5000 registry:2.0

    上面运行一个名为registry-v2的服务,-v把本地目录mount到容器内的镜像目录,方便开发者查看和管理本地镜像数据。

    上传下载镜像:

      docker push/pull localhost:5000/official/ubuntu:14.04

      由于暴露的5000端口,能访问该主机的用户都可以通过5000端口上传或下载镜像

 

4、构建反向代理

  在实际使用中,暴露主机端口是不安全的,一般设计私有仓库时会加上https反向代理。

  假设私有仓库的地址:https://my.docker.io,利用opendns组织下的nginx-auth-proxy开源项目实现反向代理功能。

  实现反向代理需要生成服务器的一对密钥和根证书,利用OpenSSL生成自签名证书命令如下:

    生成私钥文件server.key:openssl genrsa -out server.key 2048

    生成根证书文件server.pem:openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 3650 \

    -out server.pem -subj "/C=CN/ST=state/L=city/O=Your Company Name/OU=localhost"

    将pem证书转换成crt证书,放到系统证书目录(用户访问registry之前需要做这一步):

      cat server.pem | sudo tee -a /etc/ssl/certs/server.crt

 

以上是关于Docker:仓库[未完待续]的主要内容,如果未能解决你的问题,请参考以下文章

docker网络通讯容器卷容器卷容器(未完待续)

Docker入门详解

Docker实用技能

分布式 Git(未完待续)

maven使用-未完待续

从零开始手写Tomcat的教程---未完待续