获取registry镜像
docker pull registry:latest
启动一个容器
docker run -d -v /docker/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/docker/registry目录挂载到该目录,即可实现将镜像保存到主机的/docker/registry目录了。
运行docker ps看一下容器情况
检查5000端口
netstat -an | grep 5000
打开浏览器输入http://127.0.0.1:5000/v2,出现{}说明registry运行正常
验证
现在我们通过将镜像push到registry来验证一下。
我的机器上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库
docker tag hello-world 127.0.0.1:5000/hello-world
接下来,我们运行docker push将hello-world镜像push到我们的私有仓库中
docker push 127.0.0.1:5000/hello-world
现在我们可以查看我们本地/docker/registry目录下已经有了刚推送上来的hello-world。我们也在浏览器中输入http://127.0.0.1:5000/v2/_catalog,可以看到{"repositories": [hello-world]}
现在我们可以先将我们本地的127.0.0.1:5000/hello-world和hello-world先删除掉
docker rmi hello-world docker rmi 127.0.0.1:5000/hello-world
然后使用docker pull从我们的私有仓库中获取hello-world镜像
docker pull 127.0.0.1:5000/hello-world
可能问题
可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的配置文件在你要远程访问 docker registry 的机器上,修改文件 /etc/default/docker 或 /etc/sysconfig/docker,具体是哪个取决于你的系统,添加下面的内容
ADD_REGISTRY='--add-registry xxx.xxx.xxx.xxx:5000' DOCKER_OPTS="--insecure-registry xxx.xxx.xxx.xxx:5000" INSECURE_REGISTRY='--insecure-registry xxx.xxx.xxx.xxx:5000'
然后重启docker后台进程
service docker restart
这时候再push即可
部署WebUI
目前找到了两个 web ui,一个是 docker-registry-frontend https://github.com/kwk/docker-registry-frontend,另一个是 hyper/docker-registry-web https://hub.docker.com/r/hyper/docker-registry-web/。
这两个 ui 功能差不多,只需任选其一就可以了。截止到我安装的时候,docker-registry-frontend 的功能还不完善,没有删除镜像的功能,只能浏览。后一个同时具备 删除和浏览 的功能。
1、创建工作目录
$ mkdir -p /docker/registryconf /docker/webconf $ cd /docker
2、建一个用于 registry 的配置文件
$ vim /docker/registryconf/config.yml
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
3、新建一个用于 ui 的配置文件
$ vim /docker/webconf/config.yml
registry: # Docker registry url url: http://registry-srv:5000/v2 # Docker registry fqdn name: localhost:5080 # To allow image delete, should be false readonly: false auth: # Disable authentication enabled: false
4、新建一个启动脚本
$ vim docker-compose-registry.yml
version: '2' services: registry-srv: image: registry volumes: - /docker/registryconf:/etc/docker/registry:ro - /docker/registry:/var/lib/registry - /etc/localtime:/etc/localtime container_name: registry-srv restart: always ports: - "5000:5000" registry-web: image: hyper/docker-registry-web volumes: - /docker/webconf:/conf/:ro - /etc/localtime:/etc/localtime container_name: registry-web depends_on: - registry-srv restart: always ports: - "5080:8080"
5.启动
docker-compose -f docker-compose-registry.yml up -d
打包好的配置文件放在/根目录 运行docker-compose -f docker-compose-registry.yml up -d即可启动