博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搭建 Docker-Registry 私有仓库
阅读量:6333 次
发布时间:2019-06-22

本文共 4787 字,大约阅读时间需要 15 分钟。

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

本次搭建

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

添加docker用户和目录

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

useradd dockermkdir -p /home/docker_registry chown -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 update apt-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-registry pip 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 配置:

supervisorctl supervisor> reread docker-registry: available supervisor> update docker-registry: added process group supervisor> status docker-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}

 

转载于:https://www.cnblogs.com/saintaxl/p/3982061.html

你可能感兴趣的文章
asp.net mvc中配置路由默认值(Area中)
查看>>
Redis从单机到集群,一步步教你环境部署以及使用
查看>>
【note】EtherCAT Configurator 使用之主菜单介绍
查看>>
iOS获取当前城市
查看>>
浅谈数据库联合查询
查看>>
可视化机器学习工具软件的比较分析研究
查看>>
OpenCV矩形检测
查看>>
Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
查看>>
SIP业务基本知识
查看>>
fn project 试用之后的几个问题
查看>>
synchronized修饰普通方法,修饰静态方法,修饰代码块,修饰线程run方法 比较
查看>>
linux-0.11内核 调试教程+GCC源代码
查看>>
IDEA快捷键大全
查看>>
在XML里的XSD和DTD以及standalone的使用3----具体使用详解
查看>>
《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
查看>>
linux用户密码生成
查看>>
Python图像处理(11):k均值
查看>>
注解总结
查看>>
微信公众号特异功能列表
查看>>
36.Node.js 工具模块--OS模块系统操作
查看>>