搭建docker私有镜像仓库及部署 web管理端

导读:本篇文章讲解 搭建docker私有镜像仓库及部署 web管理端,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.安装centos和docker

  centos内核版本在3.10以上(推荐centos7以上),docker在1.6版本以上,具体安装docker和启动服务略过

2.官方获取docker registry镜像并启动

  #dockerpull registry 拉取官方私有仓库镜像registry

#docker run -d -p 5000:5000 –restart=always-privileged=true  –name registry -v /home/docker_file/repos:/var/lib/registry registry:latest

  说明:

   -v /home/docker_file/repos:/var/lib/registry  默认情况下,registry会将仓库存放于容器内的/var/lib/registry目录下(不同版本registry的路径可能不一样,具体官网查看其dockerfile),通过此设置将registry仓库地址修改为本机目录的/home/docker_file/repos


  –privileged=true
CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError: [Errno 13] Permission denied:‘/tmp/registry/repositories/liibrary’)或者(Receivedunexpected HTTP status: 500 Internal Server Error)错误

注:启动成功可以输入docker服务器ip:5000则会返回空白页面,私有仓库默认端口5000

3.验证本地镜像仓库

  拉取alpine镜像,然后修改tag(原tag:docker.io/alpine:latest),再push到本地镜像仓库,命令如下;

  # docker tag  alpine:latest localhost:5000/alpine:latest

  # docker pushlocalhost:5000/alpine:latest 将alpine上传到本地镜像仓库

  删除images中的alpine:latest,重新拉取本地镜像仓库的alpine:latest测试,如下:

  #docker rmi alpine:latest

  #docker pull localhost:5000/alpine:latest

  通过docker images可查看localhost:5000/alpine:latest证明本地镜像仓库安装成功

  #curl http://localhost:5000/v2/_catalog 查看本地镜像的列表

  #curl  http://localhost:5000/v2/image_name/tags/list  获取某个镜像的标签列表

 

 4.远程访问私有镜像仓库

   以上配置是只能当前服务器可访问仓库,要远程访问registry,需要配置客户端的docker访问模式支持http,docker与dockerregistry交互默认使用的是https,而搭建的私有仓库一般只提供http服务。

4.1 修改docker配置文件/etc/sysconfig/docker(ubuntu为/etc/default/docker)

   #vi /etc/sysconfig/docker

4.2 修改配置文件如下

OPTIONS=‘–insecure-registryregistry.hub:5000’

ADD_REGISTRY=‘–add-registryregistry.hub:5000’ 

   说明:registry.hub为docker私有仓库服务器的ip或域名

4.3 重启docker

   #systemctl restart  docker.service

 

4.4 测试

   可以直接拉取刚才创建的docker私有仓库服务器的镜像,无需registry的域名和端口。

 

5.部署registry的web管理端

   registry的web ui工具目前主流的有docker-registry-frontend和docker-registry-web,根据docker hub上的stars流行度来说,本次使用docker-registry-frontend来搭建registry的web ui管理端,目前此版本仅支持私有仓库镜像的浏览。

直接从docker hub中拉取运行即可

  使用方法:

   # docker run -d -eENV_DOCKER_REGISTRY_HOST=192.168.17.129 -e ENV_DOCKER_REGISTRY_PORT=5000  -p 8080:80konradkleine/docker-registry-frontend:v2

说明:执行此命令,会自动从docker hub中下载并运行docker-registry-frontend

参数说明:

   ENV_DOCKER_REGISTRY_HOST 指定对应registry私服的域名或ip

   ENV_DOCKER_REGISTRY_PORT指定对应registry私服的端口

  docker-registry-frontend运行容器使用apacheweb服务器暴露80端口,外部访问需要做服务器和容器端口绑定,此处绑定服务器的8080端口。

 

 其它常用参数:

 -e ENV_DOCKER_REGISTRY_USE_SSL=1     registry私服仅能通过HTTPs访问
   -e ENV_MODE_BROWSE_ONLY=true  仅浏览不能关联镜像模式启动

   -eENV_DEFAULT_REPOSITORIES_PER_PAGE=50  修改web端每页的镜像数,默认20

   -e ENV_DEFAULT_TAGS_PER_PAGE=5 修改web端镜像每页的tag数,默认10

 

docker-registry-frontend支持https访问,需要映射端口和关联https证书

,参数如下:

  -v  $PWD/server.crt:/etc/apache2/server.crt:ro

 -v $PWD/server.key:/etc/apache2/server.key:ro

 -p 443:443

5.其它问题

启动web管理端后如无法加载任何镜像,报错如下:

搭建docker私有镜像仓库及部署 web管理端

原因是docker-registry-frontend容器内无法访问注册服务器,解决办法是通过容器互联,使前者可以访问注册服务器的对应5000端口,命令如下:

docker run -d -eENV_DOCKER_REGISTRY_HOST=registry -e ENV_DOCKER_REGISTRY_PORT=5000 -p 8080:80–link registry:registry konradkleine/docker-registry-frontend:v2

问题分析请参照我的问题解决历程:

https://github.com/kwk/docker-registry-frontend/issues/181

最后贴一个镜像管理页面的成功运行图:

 搭建docker私有镜像仓库及部署 web管理端

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15023.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!