侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Docker Registry 私有仓库搭建详细步骤

Docker  /  管理员 发布于 4年前   267

Docker  Registry 私有仓库搭建

官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了。如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具。

本次搭建

docker-registry server (dev) (v0.9.0)

添加docker用户和目录

为了安全起见,我们可以添加一个用户docker,使用这个非root用户来允许docker registry程序,同时指定好docker镜像的存储位置,本处指定为/home/docker_registry目录

useradd dockermkdir -p /home/docker_registrychown -R docker.docker /home/docker_registry/

 从github克隆最新版本registry, 进入这个目录下的config子目录,从模板复制一个配置文件出来:

git clone https://github.com/docker/docker-registry.gitcd docker-registry/configcp config_sample.yml config.yml

此时可以修改这个config.yml配置文件,需要注意修改以下的两个地方:

#配置sqlite数据库位置sqlalchemy_index_database: _env:SQLALCHEMY_INDEX_DATABASE:sqlite:////home/docker_registry/docker-registry.db#配置本地存储位置local: &local  storage: local  storage_path: _env:STORAGE_PATH:/home/docker_registry

安装一些必要软件包和一些 Docker-Registry 需要用到的 Python 工具和库:

apt-get updateapt-get install build-essential python-dev liblzma-dev libevent-dev python-pip libssl-dev

使用apt-get安装软件包时经常会提示让你插入netinst的光盘:

Media change: please insert the disc labeled

当没有时就无法进行安装了, 这时可以打开文件/etc/apt/sources.list文件,注释掉cdrom那一行,

然后再执行apt-get update更新下deb仓库,

这样以后再使用apt-get安装时就不会再搜寻cdrom了

修改HOSTS文件加上域名

vim /etc/hosts127.0.0.1 docker.registry.com

安装Nginx

apt-get install nginx#配置Nginx configvim /etc/nginx/nginx.conf
user www-data;worker_processes 4;pid /run/nginx.pid;events {  worker_connections 768;  # multi_accept on;}http {  ##  # Basic Settings  ##  sendfile on;  tcp_nopush on;  tcp_nodelay on;  keepalive_timeout 65;  types_hash_max_size 2048;  # server_tokens off;  # server_names_hash_bucket_size 64;  # server_name_in_redirect off;  include /etc/nginx/mime.types;  default_type application/octet-stream;  ##  # Logging Settings  ##  access_log /var/log/nginx/access.log;  error_log /var/log/nginx/error.log;  ##  # Gzip Settings  ##  gzip on;  gzip_disable "msie6";  # gzip_vary on;  # gzip_proxied any;  # gzip_comp_level 6;  # gzip_buffers 16 8k;  # gzip_http_version 1.1;  # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  ##  # nginx-naxsi config  ##  # Uncomment it if you installed nginx-naxsi  ##  #include /etc/nginx/naxsi_core.rules;  ##  # nginx-passenger config  ##  # Uncomment it if you installed nginx-passenger  ##    #passenger_root /usr;  #passenger_ruby /usr/bin/ruby;  ##  # Virtual Host Configs  ##  include /etc/nginx/conf.d/*.conf;  include /etc/nginx/sites-enabled/*;    upstream docker-registry {   server localhost:5000;  }  server {   listen 80;   server_name docker.registry.com;    proxy_set_header Host    $http_host;  # required for docker client's sake   proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP    client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads   # required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486)   chunked_transfer_encoding on;   #      location / {    proxy_pass http://docker-registry;   }  }}

启动Nginx

service nginx start

访问浏览器测试

http://192.168.124.130/


 

安装python依赖

cd /opt/docker-registrypip install .

若出现:Cannot connect to proxy. Socket error: [Errno -2] Name or service not known.

手动安装依赖包 加代理参数

pip install -i http://pypi.v2ex.com/simple .#注销下面的 pip install . 安装全部--pip install -i http://pypi.v2ex.com/simple gunicorn

建立软连接

ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn

nginx启动之后,使用docker用户执行以下的命令可以测试启动:

gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 8 --max-requests 100 docker_registry.wsgi:application
访问浏览器

http://docker.registry.com


如果看到以下的输出,则表明docker registry安装成功

给目录下数据库赋权限,不然上传文件时会不能写数据库

chmod 777 /home/docker_registry/repositories/docker-registry.db

使用supervisord来进行进程的监控

apt-get install supervisor

配置supervisor [docker-registry]

vim /etc/supervisor/conf.d/docker-registry.conf

[program:docker-registry]directory=/opt/docker-registry#使用docker用户user=dockercommand=/usr/local/bin/gunicorn --access-logfile - --error-logfile - -k gevent -b 0.0.0.0:5000 -w 8 --max-requests 100 --graceful-timeout 3600 -t 3600 docker_registry.wsgi:application redirect_stderr=truestderr_logfile=nonestdout_logfile=/var/log/supervisor/docker-registry.logautostart=trueautorestart=true
#重新加载 supervisor 配置:supervisorctlsupervisor> rereaddocker-registry: availablesupervisor> updatedocker-registry: added process groupsupervisor> statusdocker-registry  RUNNING  pid 4371, uptime 0:00:01

查看端口占用

netstat -apn | grep 5000

启动重启

service supervisor start
#/etc/init.d/supervisord {start|stop|restart|force-reload|status|force-stop}

  感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


  • 上一条:
    .net 4.5部署到docker容器的完整步骤
    下一条:
    docker 深入了解镜像、容器、仓库等概念
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在docker环境中实现Laravel项目执行定时任务和消息队列流程步骤(0个评论)
    • 在MacBook下laravel项目多php版本docker开发环境配置方案(0个评论)
    • 在docker环境中部署docker部署elk架构流程步骤(1个评论)
    • docker compose跟Dockerfile的区别浅析(0个评论)
    • Ubuntu 22.04系统中安装podman流程步骤(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-11
    • 2020-06
    • 2021-05
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-11
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客