本文小编为大家详细介绍“Docker的Registry私有仓库如何搭建”,内容详细,步骤清晰,细节处理妥当,希望这篇“Docker的Registry私有仓库如何搭建”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
本次搭建
docker-registry server (dev) (v0.9.0)
添加docker用户和目录
为了安全起见,我们可以添加一个用户docker,使用这个非root用户来允许docker registry程序,同时指定好docker镜像的存储位置,本处指定为/home/docker_registry目录
useradd docker
mkdir -p /home/docker_registry
chown -r docker.docker /home/docker_registry/
从github克隆最新版本registry, 进入这个目录下的config子目录,从模板复制一个配置文件出来:
git clone https://github.com/docker/docker-registry.git
cd docker-registry/config
cp 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/hosts 127.0.0.1 docker.registry.com
安装nginx
apt-get install nginx
#配置nginx config
vim /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=docker
command=/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=true
stderr_logfile=none
stdout_logfile=/var/log/supervisor/docker-registry.log
autostart=true
autorestart=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}
读到这里,这篇“Docker的Registry私有仓库如何搭建”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3483343/blog/4455631