常见镜像仓库服务
镜像仓库( Docker Registry )有公共的和私有的两种形式:
- 公共仓库:例如Docker官方的 Docker Hub,国内也有一些云服务商提供类似于 Docker Hub 的公开服务,比如 网易云镜像服务、DaoCloud镜像服务、阿里云镜像服务等。
- 除了使用公开仓库外,用户还可以在本地搭建私有 Docker Registry。企业自己的镜像最好是采用私有Docker Registry来实现。
搭建私有镜像仓库
下载镜像registry
docker pull registry
启动容器
docker run -d -p 5000:5000 --restart=always --name=registry-srv -v /mydata/dockerRegistry:/var/lib/registry registry
搭建WEB服务
$ docker pull hyper/docker-registry-web
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/,网页上呈现
在私有镜像仓库推送或拉取镜像
会出现的push失败
$ docker push 192.168.1.87:5000/hcharts
The push refers to a repository [192.168.1.87:5000/hcharts]
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“文件。在文件中写入:
{
"insecure-registries": [
"hub.XXXXX.com:5000",
"192.168.1.87:5000"
]
}
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker