在 ubuntu 搭建 docker registry 私有仓库

为什么要搭建 docker 私有仓库

原因有几个:

  1. 项目需要,不希望将项目放到 docker hub 上。
  2. 环境需求,考虑网络、效率的问题,希望在私有服务器上建立自用的仓库,提高便利性和访问速度。
  3. 可以做更多的个性化配置。

用什么搭建 docker 私有仓库

docker 官方提供了 registry 的镜像,可以使用它来建私有仓库。

本次搭建的环境

在这里先说明一下本文的实验环境:

  1. docker 仓库服务器: ubuntu 14.04 ip地址:192.168.188.112
  2. docker 客户端机器: CentOS 7 ip地址: 192.168.188.107

搭建过程

目标

在ubuntu 14 的服务器上,安装最新版本的 docker-ce,在 docker hub 获取 registry 镜像,并启动仓库容器。在 docker 客户端机器,可以从服务器的仓库获取镜像文件。

服务器安装最新版本的 docker-ce

 curl  -sSL   https://get.docker.com/   |   sh

说明: 安装过程视网络情况而定,可能需要话费一段时间,需要耐心等待

安装加速器

由于在国内,访问国外的网站速度可能会较慢,所以,最好为ubuntu 添加加速器。

对于 ubuntu 14 的系统环境来说,修改文件 /etc/default/docker :

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

从 docker hub 获取官方 registry 镜像,并启动 registry 容器

1.   获取 registry 镜像:
      docker   pull   registry   # 默认就是最新的 latest 版本

2.  用registry 镜像启动一个仓库容器:
     docker run -d   --name=my-docker-registry-2  --restart=always -p 5000:5000   -v  /opt/data/registry:/tmp/registry    registry
说明:启动一个名字为 my-docker-registry-2 的容器,端口映射到宿主机的5000,挂载宿主机目录 /opt/data/registry 到容器的 /tmp/registry ,用于存储 push 进去的镜像文件。   

在宿主机本地测试仓库

1.从 docker hub 获取一个ubuntu 16.04 的镜像

docker  pull   ubuntu:16.04

2.将上面获取的镜像重新打 tag :

docker  tag    ubuntu:16.04    192.168.188.112:5000/my-ubuntu

3.将新打标签的镜像push 到本地仓库,docker 命令会从“. 和 : ”的格式识别是本地路径的仓库:

docker   push   192.168.188.112:5000/my-ubuntu

4.删除从docker hub 下载的镜像:

docker  rmi    ubuntu:16.04    192.168.188.112:5000/my-ubuntu
说明:   删除了本地的两个镜像文件

docker    images
说明:查看本地的镜像文件,确认上一步已经删除成功。

5.查看仓库中是否已经上传镜像成功:

[email protected]:~$   curl localhost:5000/v2/_catalog
{"repositories":["my-ubuntu"]}

说明:  这样,已经就是查询到push 镜像成功了。

6.从本地仓库拉取镜像:

docker   pull  192.168.188.112:5000/my-ubuntu
说明: docker 命令通过“ .   : ”识别是本地仓库

7.结果:

[email protected]:~$ docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:5000/my-ubuntu       latest              9adf4ebd74b9        3 weeks ago         285MB
192.168.188.112:5000/my-ubuntu   latest              9adf4ebd74b9        3 weeks ago         285MB
registry        

说明: 可以看到用 127.0.0.1或者192.168.188.112两个地址都能获取成功

从其他机器获取镜像

我们搭建了私有仓库,如果只能在一台宿主机上使用,意义就不大了。但是,官方的 registry 私有仓库是不支持其他客户端直接访问仓库服务器的。需要多做一些配置修改。

使用修改 --insecure-registry 参数的方法

修改 --insecure-registry 参数的方法,是最简单的。如果需要安全性更高的,就需要配置 SSL 访问了,这中方式留待以后继续研究。

仓库服务器修改
ubuntu 默认文件是
sudo  vim    /etc/default/docker 

修改:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=192.168.188.112:5000"
修改配置后,需重启docker 进程

为了做到重启docker 后台进程时,不会引起所有容器都被强制关闭,需要修改一些配置文件,具体请参考这篇博文:《如何保证 docker 后台进程重启,而不引起容器关闭》

centos 客户端配置

客户机这里使用的系统是 CentOS 7,在 CentOS 7上安装docker-ce 版本,请参考这篇博文:《centos7安装docker-ce新版》

1.按上面的方法安装好docker-ce 版本后,修改配置文件:

vim    /lib/systemd/system/docker.service
添加: ExecStart=/usr/bin/dockerd  --insecure-registry 192.168.188.112:5000

CentOS 的docker 后台进程重启,默认是不会导致容器强制关闭的,所以,修改配置文件后,可以放心重启后台进程:

systemctl   restart   docker

2.验证

[[email protected]_7 ~]# curl -L http://192.168.188.112:5000/v2/_catalog
{"repositories":["my-ubuntu-sshd"]}

3.从私有仓库下载镜像

docker   pull    192.168.188.112:5000/my-ubuntu

4.成功下载镜像文件

[[email protected]_7 ~]# docker images
REPOSITORY                            TAG                 IMAGE ID            CREATED             SIZE
ubuntu                                14.04               dc4491992653        2 weeks ago         222MB
192.168.188.112:5000/my-ubuntu        latest              9adf4ebd74b9        3 weeks ago         285MB

总结

docker 官方的 registry 仓库,默认是不支持从其他客户端拉取服务器仓库的镜像文件的,不过简单的办法,就是打开 --insecure-registry 这个选项。

原文地址:http://blog.51cto.com/hellocjq/2070884

时间: 2024-10-25 17:28:38

在 ubuntu 搭建 docker registry 私有仓库的相关文章

CentOS7基于Nginx和Registry2.0搭建Docker安全私有仓库

作用:Nginx做反向代理,在访问私有仓库时加个密码验证,密码用htpasswd生成 IP:192.168.0.227 1.下载registry2.0镜像 docker pull  registry:2.1.1 2.安装Nginx yum  -y install nginx 3.创建docker仓库数据和配置目录 sudo mkdir -p /opt/docker/registry/data sudo mkdir -p /opt/docker/registry/conf 4.运行docker仓库

docker registry私有仓库部署

私有仓库服务端:12.40[[email protected]_golang ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry-dev --name docker-registry registry:2.4[[email protected]_golang ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMEScebb252856b1

docker创建私有仓库

1.查看远程仓库中的列表$ sudo docker search registry    //会列出你所需要的仓库 2.获取registry仓库$ sudo docker pull registry   //最新 3.运行 $ sudo docker run -p 5000:5000  docker.io/registry   //-p映射端口 3.1查看容器运行情况[[email protected] docker]# docker psCONTAINER ID        IMAGE   

Docker的私有仓库

学习Docker的过程中Docker的私有仓库一直没能成功,就是因为CentOS 6.x和CentOS 7默认引入了支持https认证,每次在push和pull的时候都会报错,今天是周末,利用一天的时间反复测试和网上案列的整合,总算是成功了,也借此机会对学习Docker的朋友有所帮助. 个人的愚见:博友在练习的时候建议用CentOS 7.x系统,不建议用CentOS 6.x系统 一.准备 地址规划: Docker私有仓库地址:192.168.0.109 Docker客户端地址:192.168.0

简单搭建docker registry

已知信息: 服务端IP:192.168.7.2xx 客户端IP:192.168.7.1xx 服务端: docker registry中镜像本地映射地址:/Users/dockergit/private_registry(可自定义) docker registry容器中镜像存储地址:/var/lib/registry 客户端: 已创建image:test_agent:latest 环境为Linux OS,服务端和客户端都安装好docker,能使用docker命令. 简单搭建docker regis

docker 配置私有仓库、打开TCP管理端口

docker配置私有仓库.打开TCP管理端口 该机器主要用于jenkins在编译打包镜像时使用.需要能push镜像到私有仓库,需要开通tcp管理端口作为docker远程机器. 安装docker # vi /etc/resolv.conf nameserver 114.114.114.114 # yum update # yum install -y yum-utils device-mapper-persistent-data lvm2 # yum-config-manager --add-re

docker基础 私有仓库repository搭建(1) registry

使用docker的login命令之后,可以使用push命令将镜像推送到dockerhub上,但是dockerhub毕竟在公网上,免费的帐户只有一个private 的repository是免费的,剩下的就都只能做成public的.由于种种限制,企业私有仓库的创建就有了各种应用场景.本文将从使用registry的方式简单介绍如何搭建私有的repository. pull registry镜像 使用到的registry镜像 [[email protected] ~]# docker search re

docker的私有仓库的搭建

author: headsen chen date:2018-06-30  23:14:16 服务端(私有仓库:centos7_64位),使用端:centos6_64位 1.仓库的搭建: 安装docker: yum -y install epel-release yum -y install docker-iosystemctl start docker 将本地的仓库换成阿里云的镜像仓库 vim /etc/docker/daemon.json # 内容如下: { "registry-mirror

手动搭建Docker本地私有镜像仓库

实验环境:两个Centos7虚拟机,一个是Server,用作客户端,另一个是Registry,用作Docker私有镜像仓库. 基础配置 查看一下两台虚拟机的IP地址 Server的IP地址是192.168.134.151. Registry的IP地址是192.168.134.150. 使用setenforce 0临时关闭SElinux. 打开Server和Registry的内核转发功能 编辑配置文件/etc/sysctl.conf,添加下面的内容: net.ipv4.ip_forward = 1