部署内网Docker Registry

目前docker 已经分为社区版 (docker CE)和 商业版(docker EE),最新的版本由原来的1.13直接跳到了17.06,目前由于17.06的刚刚发布,在使用Docker 的时候可以根据自己的需求选择相应的版本。

Docker 安装

先移除其他非官方的版本:

yum -y remove docker docker-common container-selinux
yum -y remove docker-selinux

添加yum源,这里选择1.13的版本:

yum install -y yum-utils
yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo

对yum仓库快速缓存:

 yum makecache fast

安装docker:

yum -y install docker-engine-1.13.1

如果对版本有特殊要求,这里可以使用如下命令,列出可选的版本信息,然后指定版本安装:

yum list docker-engine.x86_64  --showduplicates |sort -r

在启动的配置文件中添加国内的镜像仓库:

 vim /usr/lib/systemd/system/docker.service
...
ExecStart=/usr/bin/dockerd --registry-mirror https://qxx96o44.mirror.aliyuncs.com
...

启动docker:

systemctl start docker

Docker Registry

我们可以使用docker registry 作为我们的私有镜像仓库,当本地制作好镜像后,可以直接上传到镜像仓库中,方便其他主机拉取镜像。

在生产环境中,官方建议使用权威的CA证书,如果我们可以申请到公共的CA证书,就可以部署我们的共有镜像仓库。

也可以通过创建私有的证书,在需要访问仓库的主机上添加认证即可。

由于目前都是内部使用,加上服务器权限控制非常严格,所以这里直接使用免CA证书的方式(官方强烈不推荐)

修改registry配置为免CA模式,指定Registry服务器的域名或者IP地址,并指定访问端口(端口可任意,和registry容器端口映射上即可)

创建daemon.json:

 vim /etc/docker/daemon.json
{
  "insecure-registries" : ["192.168.60.18:5000"]
}

重启docker 服务:

systemctl restart docker

配置用户密码

mkdir auth

下载registry镜像,并配置账户密码:

docker run  --entrypoint htpasswd registry -Bbn trying 123123 > auth/htpasswd

这个命令会拉取registry镜像,以htpasswd的方式对密码进行加密,指定用户 trying 和密码123123,并将密码存在指定文件中。

启动容器仓库:

docker run -d -p 5000:5000 --restart=always --name registry_docker -v `pwd`/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry:2

指定容器的映射端口,容器启动时应用自动启动,指定一个数据卷,挂载验证文件htpasswd,并指定验证信息。

使用账号登录仓库,输入账号密码:

docker login 192.168.60.18:5000

推送本地镜像到仓库:

docker tag 256ab8c63c04 192.168.60.18:5000/self-registry:v1
docker push 192.168.60.18:5000/self-registry:v1

其他主机下载镜像:

在另外一台需要获取镜像的主机上配置registry为无CA模式:

 vim /etc/docker/daemon.json
{
  "insecure-registries" : ["192.168.60.18:5000"]
}

启动docker, 登录:

docker login 192.168.60.18:5000
docker pull 192.168.60.18:5000/self-registry:v1

拉取成功:

# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
192.168.60.18:5000/self-registry   v1                  256ab8c63c04        About an hour ago   401 MB

补充说明:

1、内网的其他主机如果需要从本地仓库拉取镜像,都需要添加daemon.json的文件。

2、在registry的容器中,我们可以看到挂载的宿主机磁盘信息:

 # df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                  80.0G      3.3G     76.7G   4% /
/dev/vda1                80.0G      3.3G     76.7G   4% /auth
/dev/vda1                80.0G      3.3G     76.7G   4% /etc/resolv.conf
/dev/vda1                80.0G      3.3G     76.7G   4% /etc/hostname
/dev/vda1                80.0G      3.3G     76.7G   4% /etc/hosts
/dev/vda1                80.0G      3.3G     76.7G   4% /var/lib/registry

在容器中,镜像的存放位置为/var/lib/registry/docker/registry/v2/repositories/  那么对应的宿主机目录是/var/lib/docker/image/

可以在启动registry时挂载宿主机上指定的目录到容器的/var/lib/registry上。

时间: 2024-08-27 07:22:06

部署内网Docker Registry的相关文章

外网访问内网Docker容器

外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 Docker容器默认的sshd端口是22. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信息 在holer官网上申请专

怎样从外网访问内网Docker容器

外网访问内网Docker容器 局域网里的主机上安装了Docker容器,只能在内网访问,怎样从外网也能访问内网的Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 Docker容器默认的sshd端口是22. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-xxx.tar.gz Holer支持各种OS系统平台,请选择跟本地OS类型匹配的holer软件包. 2.2 获取holer access key信息 在holer官

记述一次通过跳板机部署内网服务器

前几天做了一个任务,需要将一个配置参数下发服务器部署到客户的服务器上,之前没弄过这个,中间耽误了点时间,现在对涉及到的技术做一下总结,为了保护客户的隐私,下面设计到具体数据的地方都是为描述方便虚拟的,并不是真实的. 网络架构大概是这个样子的: 我是没办法直接连到配置参数下发服务器的,中间需要通过一台跳板机,所谓的跳板机可以看做是一台带Linux操作系统的路由器,上面一般会有很多网卡(物理的或者虚拟的),这些网卡连接到了不同的网络,从不同网络过来的连接可以通过这里中转. 这里的跳板机主要目的就是为

Ceph 时钟偏移问题 clock skew detected 解决方案--- 部署内网NTP服务

告警:HEALTH_WARN clock skew detected on mon.ip-10-25-195-6; 8 requests are blocked > 32 sec; Monitor clock skew detected 原因: MON可能被MON节点之间的重要的时钟偏移激烈的影响.这经常会转变为没有明显原因的诡异的行为.为了避免这种问题,你应该在MON节点上运行一个时间同步的工具. 默认最大容忍的时钟偏移为0.05s,不建议修改这个官方开发推荐值.私自未经测试修改虽然无数据丢失

内网部署支持ssl的docker registry

首先需要使用域名或主机名制作证书,自签证书在内网可以使用,因为内网可排除信任问题,自签证书流程可以参考使用自签的证书配置nginx的https. 证书制作完成我们开始部署registry,当前registry v2版已经发布,所以我们使用v2版部署测试,部署之前需要运行docker daemon 1.将制作好的证书copy到/etc/docker/certs.d/${domain}/ca.crt中,注意目录中的domain是registry的域名或主机名,同时也是制作证书时的输入的Common

在centos下部署docker内网私服

Docker内网私服:docker-registry with nginx & ssl on centos docker-registry既然也是软件应用,自然最简单的方法就是使用官方提供的已经部署好的镜像registry.官方文档中也给出了建议,直接运行sudo docker run -p 5000:5000 registry命令.这样确实能启动一个registry服务器,但是所有上传的镜像其实都是由docker容器管理,放在了/var/lib/docker/....某个目录下.而且一旦删除容

内网环境上部署k8s+docker集群:集群ftp的yum源配置

接触docker已经有一年了,想把做的时候的一些知识分享给大家. 因为公司机房是内网环境无法连接外网,所以这里所有的部署都是基于内网环境进行的. 首先,需要通过ftp服务制作本地的yum源,可以从http://mirrors.163.com/centos/ 上找到对应版本的centos系统,下载该系统的base和extra包到本地. 将下载完成的文件放到服务器的/var/ftp/pub/media/x86_64目录下./var/ftp为ftp服务器的根目录.这里请谨记,ftp一般在系统安装的时候

【内网福音】如何离线部署Rancher

对于在公司内网环境中.无法访问互联网的用户而言,离线安装部署Rancher是解决问题的关键.本文是Rancher离线部署教程,专为内网用户排坑解难. 版本说明 OS:Centos7.3 Docker version: 1.12.6 Rancher version: 1.6.10 主机角色说明 前期准备 docker rpm wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.e

centos6 Docker桥接到主机所在的内网

测试环境: windows7台式机:   ip:10.0.1.6/16  网关:10.0.0.254/16 上网正常. vmware虚拟机一台:  centos6.6_64mini eth0 ip:10.0.1.21/16  网关:10.0.0.254/16 用到软件包: pipework iproute-2.6.32-130.el6ost.netns.2.x86_64.rpm 下载地址: https://yunpan.cn/crp5XAESHHh3d  访问密码 57e8 一.CentOS6.