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

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 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}

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

(0)

相关推荐

  • docker registry安装简单命令实现

    本文计划使用3条命令来运行一个Docker registry私服,其实很简单 环境准备: docker 1.11.2 compose文件docker-compose.yml version: '2' services: registry: image: registry:2.5.1 hostname: registry ports: - "5000:5000" environment: - TZ="Asia/Shanghai" - "REGISTRY_AU

  • docker-registry使用笔记

    相关链接 github:https://github.com/dotcloud/docker-registry api:http://docs.docker.com/reference/api/registry_api/ 安装docker-registry 官方直接给出了一个创建container的命令,在装有docker的机器上运行docker run -d -p 5000:5000 registry, 这个貌似要下载很多东西,大概500M左右,免去了手工安装的过程,很方便. 安装安成之后直接

  • 详解Docker Registry之删除镜像、垃圾回收

    Docker仓库在2.1版本中支持了删除镜像的API,但这个删除操作只会删除镜像元数据,不会删除层数据.在2.4版本中对这一问题进行了解决,增加了一个垃圾回收命令,删除未被引用的层数据.本文对这一特性进行了体验,具体步骤如下. 1.部署镜像仓库 (1)启动仓库容器 复制代码 代码如下: dockerrun -d -v /home/config.yml:/etc/docker/registry/config.yml -p 4000:5000 --nametest_registryregistry:

  • 搭建一个私有的Docker registry教程

    为什么需要搭建一个私有的registry呢?嗯,对于新手来说,Docker Hub(一个Docker公共仓库)只允许你拥有一个免费的私有版本库(repo).其他的公司也开始提供类似服务,但是价格可不便宜.另外,如果你需要用Docker部署一个用于生产环境的应用,恐怕你不希望将这些镜像放在公开的Docker Hub上吧! 这篇文章提供了一个非常务实的方法来处理搭建私有Docker registry时出现的各种错综复杂的情况.我们将会使用一个运行于DigitalOcean(之后简称为DO)的非常小巧

  • 详解Docker私有仓库Registry的搭建验证

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有的镜像仓库用于管理我们自己的镜像.这个可以通过开源软件Registry来达成目的. Registry在github上有两份代码:老代码库和新代码库.老代码是采用python编写的,存在pull和push的性能问题,出到0.9.1版本之后就标志为deprecated,不再继续开发.从2.0版本开始就到

  • 使用Docker registry镜像创建私有仓库的方法

    安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境,本文记录简单的搭建过程. 1 使用registry启动私有仓库的容器 docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry 说明:若之前没有安装registry容器则会自动下载并启动一个registry容器,创建本地的私有仓库服务.默认情况下,会将仓库创建在容器的/tmp/registry目录下,可以通过 -v 参数来将

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

    Docker  Registry 私有仓库搭建 官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了.如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具. 本次搭建 docker-registry server (dev) (v0.9.0) 添加docker用户和目录 为了安全起见,我们可以添加一个用户doc

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

    Docker  Registry 私有仓库搭建 官方已经提供了很多版本的 Linux 镜像,直接从官方仓库(Public Repositories)下载就可以了.如果考虑到安全性和速度,我们可能会想在自己局域网里架设一个私有仓库(Private Repositories)来放我们自己的镜像,Docker-Registry 正是我们需要的工具. 本次搭建 docker-registry server (dev) (v0.9.0) 添加docker用户和目录 为了安全起见,我们可以添加一个用户doc

  • docker registry 私有仓库的搭建过程

    目录 摘要 一.环境准备 二.配置registry私有仓库 三.上传与下载镜像 四.配置registry加载身份验证 五. docker registry 私有仓库查询.删除 博文参考 摘要 随着docker使用的镜像越来越多,就需要有一个保存镜像的地方,这就是仓库.目前常用的两种仓库:公共仓库和私有仓库.最方便的就是使用公共仓库上传和下载,下载公共仓库的镜像是不需要注册的,但是上传时,是需要注册的.私有仓库最常用的就是Registry.Harbor两种,那接下来详细介绍如何搭建registry

  • Docker registry私有镜像仓库服务部署案例演示

    目录 简介 registry 案例演示 环境准备 服务部署 简介 docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库,仓库默认会被创建在/var/lib/registry目录下(容器中的目录) registry 案例演示 环境准备 主机名 服务 IP docker-client 客户端(用于上传镜像) 192.168.117.130 docker-server 服务端(用于存储镜像) 192.168.117.131 服务部署 docker-server 运行 regis

  • Docker下部署lnmp详细步骤

    目录 拉取一个centos镜像 基于centos生成nginx容器 基于centos生成mysql容器 基于centos生成php容器 制作镜像 用新镜像创建lnmp容器 测试 拉取一个centos镜像 //下载centos镜像 [root@localhost ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete Digest

  • Docker安装mysql超详细步骤记录

    查看需要安装的镜像版本 dockerHub官网地址 1.搜索mysql 2.点击标签 3.点击Tags,查看想要的版本号 在安装好docker的linux中执行命令 拉取mysql最新版本 docker pull mysql 拉取mysql指定版本 docker pull mysql:5.7 拉取结束后,查看本地是否存在 docker images 运行mysql docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/v

  • centos7安装docker容器的超详细步骤记录

    目录 环境要求: 步骤如下: 一.删除之前安装的docker(若之前未安装过,此步骤省略…) 二.虚拟机联网,安装yum工具 三.设置docker镜像源 四.安装docker(网速慢的需要等会) 五.启动docker前准备** 六.启动docker 总结 环境要求: centos7.0以上版本(docker支持最低版本) 步骤如下: 一.删除之前安装的docker(若之前未安装过,此步骤省略…) 进入centos根目录执行以下命令(\ 是linux系统种命令换行符,如果命令过长,可以用\来换行)

  • 基于docker 部署canvas-lms的详细步骤

    准备: 一台8G内存的服务器.安装好docker, pull一个ubuntu镜像下来, 可以是最新版也可以是官方支持的14/ 16 更新时间: 2018-04-04 Step 1: 启动docker然后加载ubuntu镜像.命令如下: sudo docker run -it ubuntu # -it 是链接输入输出, 后面有一个command参数, 默认为/bin/bash Step 2: 安装vim, sudo (ubuntu镜像可能会非常精简, 没有sudo, 没有vim等文本编辑器) ap

  • Docker部署portainer的详细步骤

    portainer Portainer是Docker的图形化管理工具,由GO语言编写的,提供状态显示.应用模板快速部署.对于Docker(容器.镜像.网络.数据卷)的基本操作.日志显示.容器控制台等功能. 部署 docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer 描述 portainer主要用来管理docker容器,方便了解容器状态

  • 使用docker安装elk的详细步骤

    目录 1.安装docker 2.下载elk 3.启动elk 3.启动elk 4.汉化 配置要求:一台Linux服务器,内存不少于2g,centos7以上系统 1.安装docker 安装教程:CentOS Docker 安装 | 菜鸟教程 分以下几个步骤(我只写我使用过的方式): curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 安装 Docker Engine-Community yum install -y y

随机推荐