Docker搭建私有镜像仓库

Stella981
• 阅读 661

docker仓库的工作原理和maven的类似,他们都提供了提供了一个中央仓库,允许用户科技直接从中央仓库下载,同时我们也可以搭建自己的本地私有仓库。

docker本地私有镜像仓库的优点:

  1. 从私有仓库中下载节省网络带宽;
  2. 从私有仓库中下载速度快,一般都是局域网络内部署;
  3. 托管不对外的内部镜像;

下面我们将完整的说明使用docker registry 搭建docker私有镜像仓库和管理工具harbor的过程

1.安装dokcer服务

配置源wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

Docker搭建私有镜像仓库

安装docker-ce容器服务

yum -y install docker-ce

添加docker服务开机自启动systemctl enable docker &&  systemctl start docker

修改docker启动参数

cat  > /etc/docker/daemon.json  <<EOF

{

"registry-mirrors": [

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"https://registry.docker-cn.com"

],

"insecure-registries":["192.168.100.10"],

    "exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

注意:客户机的该文件也需要加如下配置

"insecure-registries":["192.168.100.10"]

Docker搭建私有镜像仓库

修改docker的启动服务脚本docker.service:

在[Service]节点下增加

ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT

修改完成使用systemctl daemon-reload && systemctl restart docker重启服务

Docker搭建私有镜像仓库

启动docker服务 systemctl start docker

查看docker版本号docker --version

Docker搭建私有镜像仓库

查看docker详细信息docker info

Docker搭建私有镜像仓库

2.拉取registry镜像

docker pull registry

Docker搭建私有镜像仓库

docker images

Docker搭建私有镜像仓库

3.挂载镜像存储目录

将容器内的数据映射挂载在自己指定的目录上,以/work/docker-repo为镜像存储的目录

Docker搭建私有镜像仓库

docker run -d -p 5000:5000 --privileged=true -v /work/docker-repo:/var/lib/registry --name docker-registry registry

Docker搭建私有镜像仓库

-d : 让容器可以后台运行

-p :指定映射端口(前者是宿主机的端口号,后者是容器的端口号)

-v :数据挂载(前者是宿主机的目录,后者是容器的目录)

--name : 为运行的容器命名

4.重启容器并开启registry服务

重启docker服务systemctl restart docker

开启registry服务docker start docker-registry

Docker搭建私有镜像仓库

5.安装epel

yum install -y epel-release

Docker搭建私有镜像仓库

6.安装pip

yum install -y python-pip

Docker搭建私有镜像仓库

7.升级pip

pip install --upgrade pip

Docker搭建私有镜像仓库

8.安装docker-compose

pip install docker-compose

Docker搭建私有镜像仓库

9.安装Harbor

官网地址:https://github.com/goharbor/harbor/releases

最新地址:

https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.0.tgz

下载解压

wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.0.tgz

Docker搭建私有镜像仓库

tar xvf harbor-offline-installer-v1.9.0.tgz

Docker搭建私有镜像仓库

10.修改harbor.yml配置

vi /work/harbor/harbor.yml

将hostname改为本机机器ip,登录密码改为123456(实际环境请改为复杂密码)

Docker搭建私有镜像仓库

11.安装启动harbor

执行 ./install.sh

Docker搭建私有镜像仓库

看到如下日志,即为安装启动成功:

Docker搭建私有镜像仓库

我们在工作机器访问:http://192.168.100.10

用户:admin   密码:123456

Docker搭建私有镜像仓库

登录成功如下:

Docker搭建私有镜像仓库

12.harbor简单使用

首选创建一个kubernets的项目

Docker搭建私有镜像仓库

然后在/work/docker-pull目录下创建拉取k8s v1.15.3所需的镜像脚本

Docker搭建私有镜像仓库

k8s-v1.15.3-pull.sh内容如下:

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.3
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/flannel:v0.9.0-amd64


docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.3 192.168.100.10/kubernetes/kube-apiserver:v1.15.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.3 192.168.100.10/kubernetes/kube-controller-manager:v1.15.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.3 192.168.100.10/kubernetes/kube-scheduler:v1.15.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.3 192.168.100.10/kubernetes/kube-proxy:v1.15.3
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 192.168.100.10/kubernetes/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 192.168.100.10/kubernetes/etcd:3.3.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 192.168.100.10/kubernetes/coredns:1.3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/flannel:v0.9.0-amd64 192.168.100.10/kubernetes/flannel:v0.9.0-amd64


docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.3
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1
docker rmi registry.cn-hangzhou.aliyuncs.com/google-containers/flannel:v0.9.0-amd64


docker push 192.168.100.10/kubernetes/kube-apiserver:v1.15.3
docker push 192.168.100.10/kubernetes/kube-controller-manager:v1.15.3
docker push 192.168.100.10/kubernetes/kube-scheduler:v1.15.3
docker push 192.168.100.10/kubernetes/kube-proxy:v1.15.3
docker push 192.168.100.10/kubernetes/pause:3.1
docker push 192.168.100.10/kubernetes/etcd:3.3.10
docker push 192.168.100.10/kubernetes/coredns:1.3.1
docker push 192.168.100.10/kubernetes/flannel:v0.9.0-amd64

Docker搭建私有镜像仓库

完成后执行chmod +x k8s-v1.15.3-pull.sh

Docker搭建私有镜像仓库

执行./k8s-v1.15.3-pull.sh

Docker搭建私有镜像仓库

在push过程中发生错误:

Docker搭建私有镜像仓库

虽然是公开仓库,是允许公开pull,但是push是需要登录的,我们这里登录harbor的管理员账号:

Docker搭建私有镜像仓库

再次执行基本,可以看到正常push了

Docker搭建私有镜像仓库

镜像操作完成docker images查看

Docker搭建私有镜像仓库

查看镜像存储目录,发现私有库中已存在镜像

Docker搭建私有镜像仓库

登录harbor中查看,也已经存在镜像

Docker搭建私有镜像仓库

至此docker 私有镜像仓库以及管理服务Harbor搭建完成。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
Docker 国内仓库和镜像
Docker国内仓库和镜像由于网络原因,我们在pullImage的时候,从DockerHub上下载会很慢。。。所以,国内的Docker爱好者们就添加了一些国内的镜像(mirror),方便大家使用。1\.国内Docker仓库阿里云(https://www.osch
Stella981 Stella981
3年前
Harbor部署私有镜像仓库
部署私有仓库下载harbor2.1.0安装包下载离线安装包:$wgethttps://github.com/goharbor/harbor/releases/download/v2.1.0rc2/harborofflineinstallerv2.1.0rc2.tgz解压!修改
Stella981 Stella981
3年前
Jenkins打Docker镜像推送到私有仓库
Jenkins打Docker镜像推送到私有仓库因为我的Jenkins是安装在群晖NAS中的docker,所以我这边就以Docker安装Jenkins为例!(https://oscimg.oschina.net/oscnet/up32dceca60af852573f508da551328bc92
Stella981 Stella981
3年前
Maven第四篇【私有仓库、上传jar包、引用私服jar包、上传本地项目到私服】
搭建私有服务器前面已经说过了,我们使用Maven的使用,如果需要导入相对应的jar包,Maven首先会在我们的本地仓库中寻找—私有仓库—中心仓库…然而,我们的本地仓库常常没有想要的jar包的,而经常去中心仓库下载这就非常浪费时间和资源了…因此我们一般都有一个私有仓库…另外有些公司都不提供外网给项目组人员,因此就不能使用mave
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Linux Docker镜像使用
docker拉取镜像命令dockerpull选项DockerRegistry地址:端口号/仓库名:标签中框号内内容都为可选内容若不输入镜像仓库地址则拉取官方默认仓库,即DockerHub   https://hub.docker.com/(https://www.oschina.net/action
Stella981 Stella981
3年前
Docker私有仓库的构建
\root@localhost~\vim/etc/sysconfig/dockerINSECURE\_REGISTRY'insecureregistry'INSECURE\_REGISTRY'insecureregistry192.168.30.24:5000'\root@localhost~\syste
Stella981 Stella981
3年前
Docker 私有仓库搭建
引用自:https://blog.csdn.net/chenhaifeng2016/article/details/78652309转自:https://www.cnblogs.com/Tempted/p/7768694.html也可参考链接:http://www.ywnds.com/?p7958环境准备环境:两个