美文网首页
docker创建私有仓库来管理镜像2021-12-11

docker创建私有仓库来管理镜像2021-12-11

作者: 托贝多尔 | 来源:发表于2021-12-11 17:57 被阅读0次

unit1:docker 官方提供的私有仓库 registry

step1:从docker官方pull用于管理私有仓库镜像服务
    docker pull registry:2
step2:挂载仓库到本地
    docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
    说明:Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了
    验证挂载是否成功:浏览器访问http://127.0.0.1:5000/v2
setp3:上传镜像到私有仓库
    docker tag nginx:latest localhost:5000/nginx:latest
    docker push localhost:5000/nginx:latest
    访问 http://127.0.0.1:5000/v2/_catalog 查看私有仓库目录,可以看到刚上传的镜像了
setp4:下载私有仓库镜像
    docker pull localhost:5000/镜像名:版本号
    例如
    docker pull localhost:5000/nginx:latest

unit2:Harbor用于存储和分发Docker镜像的企业级Registry服务器

说明:harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求
step1:下载harbor
    https://github.com/goharbor/harbor/releases
    tar -xvf harbor-offline-installer-v1.2.2.tgz
step2:配置harbor
    非mac用户:
        非 Mac 用户只需要 修改 harbor.cfg 中的 hostname ,就可以直接通过./install.sh 就可以构建镜像,并把服务启动起来
        #hostname 改为本地ip,非 Mac OS系统 可以不指定端口
        hostname = 192.168.31.143:9090
        #设置secretkey_path 的路径为 当前目录的data下
        secretkey_path = ./data
    mac用户:
        Mac用户要配置secretkey_path 和 下面 docker-    
                    compose.yml 的修改 
setp3:安装harbor构建镜像
    ./install.sh
setp4:使用harbor
    访问:http://127.0.0.1:9090/
    默认 admin 用户的密码为 Harbor12345,可以在 harbor.cfg 进行修改
setp4:上传镜像到harbor
    docker login -u admin -p Harbor12345 127.0.0.1:9090
    说明:登录私有仓库,可以使用 admin 用户 ,也可以使用我们自己创建的具有上传权限的用户
    docker tag nginx:latest 127.0.0.1:9090/library/nginx:latest
    docker push 127.0.0.1:9090/library/nginx:latest
    说明2:访问 http://127.0.0.1:9090/harbor/projects ,在 library 项目下可以看见刚上传的 nginx镜像了

docker- compose.yml 文件配置

version: '2'
services:
  log:
    image: vmware/harbor-log:v1.2.2
    container_name: harbor-log 
    restart: always
    volumes:
      - ./log/:/var/log/docker/:z
    ports:
      - 127.0.0.1:1514:514
    networks:
      - harbor
  registry:
    image: vmware/registry:2.6.2-photon
    container_name: registry
    restart: always
    volumes:
      - ./data/registry:/storage:z
      - ./common/config/registry/:/etc/registry/:z
    networks:
      - harbor
    environment:
      - GODEBUG=netdns=cgo
    command:
      ["serve", "/etc/registry/config.yml"]
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "registry"
  mysql:
    image: vmware/harbor-db:v1.2.2
    container_name: harbor-db
    restart: always
    volumes:
      - ./data/database:/var/lib/mysql:z
    networks:
      - harbor
    env_file:
      - ./common/config/db/env
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "mysql"
  adminserver:
    image: vmware/harbor-adminserver:v1.2.2
    container_name: harbor-adminserver
    env_file:
      - ./common/config/adminserver/env
    restart: always
    volumes:
      - ./data/config/:/etc/adminserver/config/:z
      - ./data/secretkey:/etc/adminserver/key:z
      - ./data/:/data/:z
    networks:
      - harbor
    depends_on:
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "adminserver"
  ui:
    image: vmware/harbor-ui:v1.2.2
    container_name: harbor-ui
    env_file:
      - ./common/config/ui/env
    restart: always
    volumes:
      - ./common/config/ui/app.conf:/etc/ui/app.conf:z
      - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z
      - ./data/secretkey:/etc/ui/key:z
      - ./data/ca_download/:/etc/ui/ca/:z
      - ./data/psc/:/etc/ui/token/:z
    networks:
      - harbor
    depends_on:
      - log
      - adminserver
      - registry
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "ui"
  jobservice:
    image: vmware/harbor-jobservice:v1.2.2
    container_name: harbor-jobservice
    env_file:
      - ./common/config/jobservice/env
    restart: always
    volumes:
      - ./data/job_logs:/var/log/jobs:z
      - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z
      - ./data/secretkey:/etc/jobservice/key:z
    networks:
      - harbor
    depends_on:
      - ui
      - adminserver
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "jobservice"
  proxy:
    image: vmware/nginx-photon:1.11.13
    container_name: nginx
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      - 9090:80
      - 443:443
      - 4443:4443
    depends_on:
      - mysql
      - registry
      - ui
      - log
    logging:
      driver: "syslog"
      options:  
        syslog-address: "tcp://127.0.0.1:1514"
        tag: "proxy"
networks:
  harbor:
    external: false

参考连接:
https://cloud.tencent.com/developer/article/1437186?from=article.detail.1491693

相关文章

网友评论

      本文标题:docker创建私有仓库来管理镜像2021-12-11

      本文链接:https://www.haomeiwen.com/subject/mookfrtx.html