前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker镜像仓库搭建

docker镜像仓库搭建

作者头像
似水的流年
发布2019-12-06 14:01:59
1.6K0
发布2019-12-06 14:01:59
举报
文章被收录于专栏:电光石火电光石火

获取registry镜像

代码语言:javascript
复制
docker pull registry:latest

启动一个容器

代码语言:javascript
复制
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端口

代码语言:javascript
复制
netstat -an | grep 5000

打开浏览器输入http://127.0.0.1:5000/v2,出现{}说明registry运行正常 验证 现在我们通过将镜像push到registry来验证一下。 我的机器上有个hello-world的镜像,我们要通过docker tag将该镜像标志为要推送到私有仓库

代码语言:javascript
复制
docker tag hello-world 127.0.0.1:5000/hello-world

接下来,我们运行docker push将hello-world镜像push到我们的私有仓库中

代码语言:javascript
复制
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先删除掉

代码语言:javascript
复制
docker rmi hello-world
docker rmi 127.0.0.1:5000/hello-world

然后使用docker pull从我们的私有仓库中获取hello-world镜像

代码语言:javascript
复制
docker pull 127.0.0.1:5000/hello-world

可能问题 可能会出现无法push镜像到私有仓库的问题。这是因为我们启动的registry服务不是安全可信赖的。这是我们需要修改docker的配置文件在你要远程访问 docker registry 的机器上,修改文件 /etc/default/docker 或 /etc/sysconfig/docker,具体是哪个取决于你的系统,添加下面的内容

代码语言:javascript
复制
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、创建工作目录

代码语言:javascript
复制
$ mkdir -p /docker/registryconf /docker/webconf
$ cd /docker

2、建一个用于 registry 的配置文件

代码语言:javascript
复制
$ vim /docker/registryconf/config.yml
代码语言:javascript
复制
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 的配置文件

代码语言:javascript
复制
$ vim /docker/webconf/config.yml
代码语言:javascript
复制
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、新建一个启动脚本

代码语言:javascript
复制
$ vim docker-compose-registry.yml
代码语言:javascript
复制
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.启动

代码语言:javascript
复制
docker-compose -f docker-compose-registry.yml up -d

打包好的配置文件放在/根目录 运行docker-compose -f docker-compose-registry.yml up -d即可启动 下载配置文件docker.zip

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档