Docker的私有仓库
私有仓库搭建与入门
创建步骤
- 下载官方的仓库镜像
docker pull registry
- 启动Docker Registry容器,默认情况下,会将私有仓库存放于容器内的/var/lib/registry(版本不同可能会有变动,之前是在/tmp/registry)目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失。
所以一般情况下会指定本地一个目录挂载到容器内的/var/lib/registry下,如下:
docker run -d --name=my_registry -p 7779:5000 -v /ccuse/myregistry/:/var/lib/registry/ --privileged=true registry
- 查看Docker Registry进程
docker ps
基本操作
- 查看Registry仓库中现有的镜像
curl -XGET http://192.168.3.112:7779/v2/_catalog
命令的结果将返回一个镜像的清单
- 将Docker镜像推到Registry中
//给本地镜像打Tag
docker tag mytomcat9 192.168.3.112:7779/mytomcat9test
//推送镜像到Registry中
docker push 192.168.3.112:7779/mytomcat9test
(会出现错误,因为client与Registry交互默认将采用https访问,但我们在安装Registry时并未配置指定相关的key和crt文件,https将无法访问)
//centos在/etc/sysconfig/docker中做配置
ADD_REGISTRY='--add-registry 192.168.3.112:7779’
INSECURE_REGISTRY=‘--insecure-registry 192.168.3.112:7779’
//ubuntu在/etc/docker/default.json中配置:
{ "insecure-registries":["192.168.3.112:7779"] }
//然后重启docker服务:
service docker restart
WEB管理服务搭建
根据上面官方提供的镜像搭建的私服,只有API的操作方式,对于我们管理自己的镜像不直观也不方便,熟悉nexus私服的都知道,管理一些jar依赖时候可以方便的通过web页面的方式进行。还好我们可以通过hyper/docker-registry-web这个镜像来搭建一个web服务来进行私服镜像的管理。
访问docker的官方,可以搜索到,主要的安装步骤如下(具体的说明请参考官方文档说明https://hub.docker.com/r/hyper/docker-registry-web/):
- 拉取镜像到本地
docker pull hyper/docker-registry-web
- 启动:
方式一:
//启动私服镜像服务
docker run -d -p 7779:5000 --name registry-srv registry
//启动web服务
docker run -it -p 7780:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
方式二:
//带身份验证访问
docker run -it -p 7780:8080 --name registry-web --link registry-srv \
-e REGISTRY_URL=https://registry-srv:5000/v2 \
-e REGISTRY_TRUST_ANY_SSL=true \
-e REGISTRY_BASIC_AUTH="YWRtaW46Y2hhbmdlbWU=" \
-e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web
方式三:
//使用配置启动
1 新建配置文件
registry:
# Docker registry url
url: http://registry-srv:5000/v2
# Docker registry fqdn
name: localhost:5000
# To allow image delete, should be false
readonly: false
auth:
# Disable authentication
enabled: false
2 启动
docker run -d -p 7779:5000 --name registry-srv registry
docker run -it -p 7780:8080 --name registry-web --link registry-srv -v $(pwd)/config.yml:/conf/config.yml:ro hyper/docker-registry-web
访问web服务查看仓库中镜像:
为web服务增加删除功能
我们可以看到上面私服中只有查看镜像的操作,没有删除的操作,如果要删除的话,要创建一个给registry用的config.yml,在里面设置可以delete,例如:
``` registry的配置文件
version: 0.1
log:
level: info
formatter: text
fields:
service: registry-srv
environment: production
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
# 要在ui 上能够删除镜像,enable 的值必须是true
enabled: true
http:
addr: :5000
<pre class="line-numbers prism-highlight" data-start="1"><code class="language-null"><br />还要给web服务也提供一个配置文件,是其能够在页面上显示delete操作的按钮
``` web的配置文件
registry:
# Docker registry url
url: http://registry-srv:5000/v2
# Docker registry fqdn
name: localhost:5000
# To allow image delete, should be false
readonly: false
delete:
enabled:true
auth:
# Disable authentication
enabled: false
它们的启动命令如下:
docker run -d -p 7779:5000 --name registry-srv -v /ccuse/myregistry/:/var/lib/registry -v $(pwd)/config-svr.yml:/conf/config.yml registry
docker run -it -p 7780:8080 --name registry-web --link registry-srv -v $(pwd)/config.yml:/conf/config.yml:ro hyper/docker-registry-web
再次进入私服的web页面查看容器镜像,发现页面上多了delete的操作按钮,我们可以通过这里对镜像进行删除了。当然你也可以进入到容器的保存目录,手动去删除。