首页 > 网站 > 建站经验 > 正文

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

2019-11-02 16:15:14
字体:
来源:转载
供稿:网友

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;   }  }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表