电光石火电光石火

陌晴博客
ilkhome.cn

docker镜像仓库搭建

获取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即可启动
下载配置文件docker.zip

本博客所有文章如无特别注明均为原创。作者:似水的流年
版权所有:《电光石火》 => docker镜像仓库搭建
本文地址:http://www.ilkhome.cn/index.php/archives/397/
欢迎转载!复制或转载请以超链接形式注明,文章为 似水的流年 原创,并注明原文地址 docker镜像仓库搭建,谢谢。

评论