docker搭建私有仓库 CentOS环境下Docker私有仓库搭建教你分分钟搞定Docker私有仓库Registry

–>

 

参考资料

Docker系列三:DockerHub私有仓库的搭建

[Docker] Docker 私有仓库搭建教程(带用户验证)

手把手教你搭建Docker Registry私服

 

有了docker hub,为什么还要搭建docker私有仓库?

1、性能考虑:docker hub的访问要通过互联网,性能太低。

2、安全性:更多的时候,镜像不想被外部的人获取,虽然可以在docker hub上申请私有repository,但是需要付费。

 

    • 安装docker

    如下操作是在root用户下

    yum -y install docker-io

    启动docker

    service docker start   # 启动docker
    service docker stop    # 停止docker
    service docker restart # 重启docker

     

    • 搭建docker私有仓库

    搭建docker私有仓库也是通过docker,真是就地取材。

    1、首先下载registry镜像

    docker pull registry:2

    说明:

    这里下载的是最新版本2。

     

    2、启动registry镜像的容器

    docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

    说明:

    -d ==> 作为daemon进程启动,也就是后台启动

    -v /myregistry:/tmp/registry ==> 默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录/myregistry挂载到容器,可以防止容器意外停止后镜像的丢失。

    -p 5000:5000 ==> 前一个5000是host的端口,后一个是容器的端口。这里是将容器的5000端口映射到host的5000端口。

     

    3、配置https权限支持

  • 第一种(已测试)

    1. vim /etc/docker/daemon.json

    2.  

      添加

    3.  

      { “insecure-registries”:[“192.168.1.40:5000”] }

      重启docker服务

    第二种(未测试)修改/etc/sysconfig/docker,我的文件内容如下

    # /etc/sysconfig/docker
    #
    # Other arguments to pass to the docker daemon process
    # These will be parsed by the sysv initscript and appended
    # to the arguments list passed to docker -d
    
    other_args="--exec-driver=lxc --selinux-enabled --insecure-registry 100.90.61.14:5000"
    DOCKER_CERT_PATH=/etc/docker
    
    # Resolves: rhbz#1176302 (docker issue #407)
    DOCKER_NOWARN_KERNEL_VERSION=1
    
    # Location used for temporary files, such as those created by
    # # docker load and build operations. Default is /var/lib/docker/tmp
    # # Can be overriden by setting the following environment variable.
    # # DOCKER_TMPDIR=/var/tmp
    #
    curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://2a5b5ce4.m.daocloud.io

    说明:

    –insecure-registry 100.90.61.14:5000,表示开启5000端口的非安全模式,也就是http模式。

    重启docker服务

    service docker restart

     

     

    • 上传镜像到私有registry

    先下载一个httpd镜像作为示例

    docker pull httpd

    修改一下该镜像的tag

    # docker tag httpd 100.90.61.14:5000/kangaroo/httpd:v1

    说明:

    1)我们在镜像前面加上了运行私有registry的ip:port,这是必须的,只有访问docker hub的时候可以忽略ip:port。

    2)kangaroo是我的网名,这里加上予以区分用户。

     

    上传

    上传镜像到私有registry

    # docker push 100.90.61.14:5000/kangaroo/httpd:v1

    在私有registry上查看镜像

    # curl -XGET http://100.90.61.14:5000/v2/_catalog

    {"repositories":["kangaroo/httpd"]}

     

    下载

    从私有registry上下载镜像

    删除本地镜像

    docker rmi 100.90.61.14:5000/kangaroo/httpd:v1

    从私有registry上下载

    docker pull 100.90.61.14:5000/kangaroo/httpd:v1

    查看本地镜像,可以看到已经拉下来了。

 

总结,想要使用私用仓库,必须修改http权限

 

上面搭建的是不需要用户登陆验证的,一般情况在正式项目中都需要用户登陆验证,下面就来创建用户密码

第一步 生成 用户名/密码 访问密钥 (这里设置用户名 abc , 密码 abc123)

2、 设置配置文件,启用删除镜像功能(也可以不启用,看业务需要,修改 storage – delete – enable 为 false 即可)

# mkdir -p /opt/registry-var/config
# vim /opt/registry-var/config/config.yml



version: 0.1
log:
  fields:
    service: registry
storage:
  delete:
    enabled: true
  cache:
    blobdescriptor: inmemory
  filesystem:
    rootdirectory: /var/lib/registry
http:
  addr: :5000
  headers:
    X-Content-Type-Options: [nosniff]
health:
  storagedriver:
    enabled: true
    interval: 10s
threshold: 3

3、启动服务(这里将镜像路径映射到宿主机的 /opt/registry-var/ 文件夹下,可以根据需要修改)

 

docker run -d -p 5000:5000 –restart=always  –name=registry -v /myregistry/config/:/etc/docker/registry/ -v /myregistry/auth/:/auth/ -v /myregistry/:/var/lib/registry/ -e “REGISTRY_AUTH=htpasswd” -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2

# docker run -d -p 5000:5000 --restart=always  --name=registry\
  -v /opt/registry-var/config/:/etc/docker/registry/ \
  -v /opt/registry-var/auth/:/auth/ \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -v /opt/registry-var/:/var/lib/registry/ \
registry:2.5

4、登陆  docker login  192.168.81.224:5000

5、查看上传的镜像

注意,报下面的错误,可以用浏览器打开 或者 

curl -u username:password http://

 

6、查看镜像详细信息

 

docker run -d -p 5000:5000 –restart=always  –name=registry -v /myregistry/config/:/etc/docker/registry/ -v /myregistry/auth/:/auth/ -v /myregistry/:/var/lib/registry/ -e “REGISTRY_AUTH=htpasswd” -e “REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm” -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd  registry:2

 

 

删除私用仓库镜像:

https://blog.51cto.com/302876016/1966816

1、配置config.yml

2、查看img:v1.2的digest值

3删除

4查看是否删除

 

原文链接:https://www.cnblogs.com/lfxiao/p/9829190.html
本文来源 互联网收集,文章内容系作者个人观点,不代表 本站 对观点赞同或支持。如需转载,请注明文章来源,如您发现有涉嫌抄袭侵权的内容,请联系本站核实处理。

© 版权声明

相关文章