常见镜像仓库服务

镜像仓库( Docker Registry )有公共的和私有的两种形式:

  • 公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如 网易云镜像服务DaoCloud镜像服务阿里云镜像服务等。
  • 除了使用公开仓库外,用户还可以在本地搭建私有 Docker Registry。企业自己的镜像最好是采用私有Docker Registry来实现。

搭建私有镜像仓库

下载镜像registry

  1. docker pull registry

启动容器

  1. docker run -d -p 5000:5000 --restart=always --name=registry-srv -v /mydata/dockerRegistry:/var/lib/registry registry

搭建WEB服务

  1. $ docker pull hyper/docker-registry-web
  2. docker run -it -p 8080:8080 --restart=always --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web

-it: 以交互模式运行 —link:链接其它容器(registry-srv),在此容器中,使用registry-srv等同于registry-srv容器的局域网地址 -e:设置环境变量

web端查看私有仓库镜像

访问:http://192.168.1.87:8080/,网页上呈现


在私有镜像仓库推送或拉取镜像

image.png


会出现的push失败

  1. $ docker push 192.168.1.87:5000/hcharts
  2. The push refers to a repository [192.168.1.87:5000/hcharts]
  3. Get https://192.168.1.87:5000/v1/_ping: http: server gave HTTP response to HTTPS client

这是因为Docker在1.3.x之后默认docker registry使用的是https,为了解决这个问题,修改本地主机的docker启动配置文件.

在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

  1. {
  2. "insecure-registries": [
  3. "hub.XXXXX.com:5000",
  4. "192.168.1.87:5000"
  5. ]
  6. }
  1. # 重加载
  2. systemctl daemon-reload
  3. # 重启docker
  4. systemctl restart docker

参考