Centos7系统创建Docker本地仓库

在kubernetes技术体系中,镜像的仓库扮演着重要的角色。应用的更新与发布都是通过对镜像进行更新,并通过新的镜像启动容器实现的。

为方便之后的学习,本文将介绍在centos7上实现docker本地仓库的搭建。之前写过一篇在centos6上搭建本地仓库的文章,当时使用的registry版本为V1。V1版本在nginx代理上配置和v2版本存在较大差别,前文传送门: http://blog.51cto.com/ylw6006/1597873

环境介绍:
操作系统版本:centos linux 7.2 64bit
Server: 192.168.115.5/24 vm1
Clinet: 192.168.115.6/24 vm2
docker版本: 1.12.6

一、在vm1上创建registry

# docker pull docker.io/registry
# mkdir /home/registry
# docker run -d -p 5000:5000 --name registry --privileged=true --restart=always  \
 -v /home/registry:/var/lib/registry registry
# curl -XGET http://192.168.115.5:5000/v2/_catalog

通过执行上述命令就可以简单构建出一个可用的本地仓库,但仓库没有配置用户认证,且使用的是http协议。

二、配置vm1使用本地仓库
docker1.12.6版本默认要求仓库必须用https协议,我们可以修改docker配置文件允许使用http协议的仓库。

# grep '5000' /etc/sysconfig/docker
OPTIONS='-g /home/docker -H 0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry 192.168.115.5:5000'
ADD_REGISTRY='--add-registry 192.168.115.5:5000'
# systemctl restart docker
# docker start registry
# docker tag docker.io/busybox 192.168.115.5:5000/busybox  
# docker push 192.168.115.5:5000/busybox   
# curl -XGET http://192.168.115.5:5000/v2/_catalog   
# curl -XGET http://192.168.115.5:5000/v2/busybox/tags/list 

Centos7系统创建Docker本地仓库

三、使用脚本删除本地仓库中的镜像文件,也可以直接删除对应目录的文件夹达到效果

# curl  \
https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
# chmod a+x /usr/local/bin/delete_docker_registry_image
# export REGISTRY_DATA_DIR=/home/registry/docker/registry/v2
# delete_docker_registry_image --image busybox 

Centos7系统创建Docker本地仓库

四、使用nginx对客户端的请求进行代理
1、安装nginx,这里为了省事,直接用rpm包安装。准备配置文件如下

# yum -y install nginx httpd-tools
# cat /etc/nginx/conf.d/docker.conf 
upstream docker-registry {
 server 192.168.115.5:5000;
}  
server {
 listen  443;
 server_name  registry.fjhb.cn;  
 ssl on;
 ssl_certificate     /etc/nginx/keys/nginx.crt;
 ssl_certificate_key /etc/nginx/keys/nginx.key;
 proxy_set_header Host       $http_host;   # required for Docker client sake
 proxy_set_header X-Real-IP  $remote_addr; # pass on real client 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 /v2/ {
     # let Nginx know about our auth file
     auth_basic              "Restricted";
     auth_basic_user_file    docker-registry.htpasswd;
     add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always;
     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
     proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
     proxy_set_header  X-Forwarded-Proto $scheme;
     proxy_read_timeout                  900;
     proxy_pass http://docker-registry;
 }
}

2、使用openssl工具创建自签名证书

# cd /etc/pki/CA/
# touch ./{serial,index.txt}
# echo "00" > serial
# openssl  genrsa -out private/cakey.pem 2048
# openssl  req -new -x509 -key private/cakey.pem -days 3650 -out cacert.pem
# cd /etc/ssl/
# openssl genrsa -out nginx.key 2048
# openssl  req -new -key nginx.key -out nginx.csr
# openssl ca -in nginx.csr -days 3650 -out nginx.crt
# htpasswd -c  /etc/nginx/docker-registry.htpasswd yang 
# mkdir /etc/nginx/keys/
# mv nginx.crt  nginx.key  /etc/nginx/keys/
# nginx -t   
# systemctl start nginx
# netstat -ntpl |grep nginx 

Centos7系统创建Docker本地仓库

3、修改vm1主机的hosts文件,并进行测试

# ping -c 1 registry.fjhb.cn
# curl https://registry.fjhb.cn

Centos7系统创建Docker本地仓库

以上是因为证书是自签名的,操作系统认证失败

# cp /etc/pki/tls/certs/ca-bundle.crt{,.bak} 
# cat /etc/pki/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt
# systemctl restart docker
# docker start registry
# curl https://registry.fjhb.cn
# curl -u yang:123 https://registry.fjhb.cn
# docker login -u yang -p 123 -e ylw@fjhb.cn registry.fjhb.cn

Centos7系统创建Docker本地仓库


# docker tag docker.io/busybox  registry.fjhb.cn/busybox
# docker push registry.fjhb.cn/busybox
# curl -XGET http://192.168.115.5:5000/v2/_catalog 
# curl -XGET http://192.168.115.5:5000/v2/busybox/tags/list 

Centos7系统创建Docker本地仓库

参考文档:
https://github.com/burnettk/delete-docker-registry-image

### 回答1: 在CentOS 7上安装Docker私有仓库的步骤如下: 1. 首先,确保已经安装了Docker。如果没有安装,请使用以下命令安装: ``` sudo yum install docker ``` 2. 接下来,创建一个目录来存储私有仓库的镜像和数据: ``` sudo mkdir /opt/docker-registry ``` 3. 使用以下命令启动私有仓库容器: ``` sudo docker run -d -p 5000:5000 --name registry \ -v /opt/docker-registry:/var/lib/registry \ registry:2 ``` 此命令将从Docker Hub下载最新版本的Registry镜像,并将其启动在名为“registry”的容器中。容器将在本地端口5000上监听传入的连接,并将所有的镜像和数据存储在“/opt/docker-registry”目录中。 4. 配置Docker客户端以使用私有仓库。在需要使用私有仓库的机器上,编辑或创建“/etc/docker/daemon.json”文件,将以下内容添加到其中: ``` { "insecure-registries": ["myregistrydomain.com:5000"] } ``` 将“myregistrydomain.com”替换为私有仓库的主机名或IP地址。此配置告诉Docker客户端,可以信任指定的私有仓库,允许从该仓库拉取镜像。 5. 重新启动Docker守护程序: ``` sudo systemctl restart docker ``` 现在,您可以将镜像推送到私有仓库中,并从该仓库拉取镜像。例如,要将名为“myimage”的镜像推送到私有仓库,请执行以下命令: ``` sudo docker tag myimage myregistrydomain.com:5000/myimage sudo docker push myregistrydomain.com:5000/myimage ``` 要从私有仓库中拉取该镜像,请使用以下命令: ``` sudo docker pull myregistrydomain.com:5000/myimage ``` ### 回答2: 在CentOS7中安装Docker私有仓库可以按照以下步骤进行: 步骤1:安装Docker 首先,你需要在CentOS7上安装Docker。可以通过执行以下命令来安装最新版本的Docker: ``` sudo yum install docker ``` 步骤2:启动Docker服务 安装完成后,启动Docker服务: ``` sudo systemctl start docker ``` 步骤3:下载Docker私有仓库镜像 接下来,我们需要下载Docker私有仓库镜像。可以通过运行以下命令来下载最新版本的Docker仓库镜像: ``` sudo docker pull registry ``` 步骤4:创建Docker私有仓库容器 下载完镜像后,我们需要创建Docker私有仓库容器。可以运行以下命令: ``` sudo docker run -d -p 5000:5000 --restart=always --name registry registry ``` 这样就创建了一个名为“registry”的Docker私有仓库容器,并将其映射到主机的5000端口。 步骤5:测试私有仓库 现在,我们可以测试私有仓库是否正常工作。可以通过运行以下命令在私有仓库创建一个映像: ``` sudo docker tag <镜像名> localhost:5000/<镜像名> sudo docker push localhost:5000/<镜像名> ``` 然后,从私有仓库中拉取这个映像: ``` sudo docker pull localhost:5000/<镜像名> ``` 如果能够成功创建和拉取映像,说明Docker私有仓库已经安装并运行成功。 步骤6:设置Docker客户端使用私有仓库 如果你希望在其他机器上访问私有仓库,需要在每个Docker客户端上修改Docker配置文件。打开配置文件`/etc/docker/daemon.json`,添加以下内容: ``` { "insecure-registries" : ["<私有仓库地址>:5000"] } ``` 保存并关闭文件后,重新启动Docker服务: ``` sudo systemctl restart docker ``` 现在,你可以在其他Docker客户端上使用私有仓库了。 这就是在CentOS7中安装Docker私有仓库的步骤。希望对你有所帮助。 ### 回答3: 在CentOS 7中安装Docker私有仓库需要以下步骤: 1. 安装Docker:首先,需要安装Docker Engine,可以使用以下命令进行安装: ``` sudo yum install docker -y ``` 2. 启动Docker服务:安装完成后,启动并激活Docker服务: ``` sudo systemctl start docker sudo systemctl enable docker ``` 3. 创建Docker私有仓库容器:使用以下命令创建并启动Docker私有仓库容器: ``` sudo docker run -d -p 5000:5000 --restart=always --name registry registry:2 ``` 这将在本地主机的5000端口上启动私有仓库容器,并设置自动启动。 4. 配置Docker客户端:为了让Docker客户端能够与私有仓库通信,需要在客户端的Docker配置文件中添加以下内容: ``` sudo vi /etc/docker/daemon.json ``` 在打开的文件中添加以下内容保存并退出: ``` { "insecure-registries" : ["your-registry-domain:5000"] } ``` 将"your-registry-domain"替换为您的主机名或IP地址。 5. 重启Docker服务:在修改Docker配置文件后,重启Docker服务使其生效: ``` sudo systemctl restart docker ``` 至此,在CentOS 7中安装和配置了Docker私有仓库。您可以通过使用Docker命令将镜像推送到私有仓库,并在其他主机上使用该仓库进行拉取和部署镜像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值