普斯泰网站建设,电力建设期刊网站投稿,两个网站 一个域名,龙湖镇华南城网站建设文章目录一、Docker Registry是什么#xff1f;二、Docker Registry部署私有仓库2.1、Docker Registry安装2.2、Docker Registry配置2.3、启动Docker Registry2.4、Docker客户端配置2.5、向Docker Registry上传和下载镜像三、Docker Registry鉴权和认证3.1、基本认证3.2、Bear…
文章目录一、Docker Registry是什么二、Docker Registry部署私有仓库2.1、Docker Registry安装2.2、Docker Registry配置2.3、启动Docker Registry2.4、Docker客户端配置2.5、向Docker Registry上传和下载镜像三、Docker Registry鉴权和认证3.1、基本认证3.2、Bearer Token认证3.3、AWS认证3.4、LDAP认证一、Docker Registry是什么
Docker Registry 是一个无状态、高度可扩展的服务器端应用程序用于存储和分发 Docker镜像。Docker Registry是基于Apache 许可证开源的它是目前应用最广泛的镜像仓库管理程序所有的源码在github上开源如果感兴趣的话可以clone相关的代码进行深层次的学习。
为什么需要使用Docker Registry 需要对镜像进行严格统一管理 需要拥有镜像的分发渠道 并且将镜像管理和分发集成到内部统一开发流程中。
例如搭建内部CI平台自动构建镜像、存储镜像和分发镜像实现一键构建打通从开发测试环境到生产环境。 二、Docker Registry部署私有仓库
部署Docker Registry之前先安装Docker我的环境是Centos直接使用以下命令
[rootnode1 docker]# yum update
[rootnode1 docker]# yum install docker
[rootnode1 docker]# docker version
Client:Version: 1.13.1API version: 1.26Package version:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?你可以创建专门的docker用户进行操作更加安全刚创建的用户不在sudo user里面可以通过以下方式设置,这里为了方便我使用了root用户。
chmod uw /etc/sudoers
vim /etc/sudoers
//填入以下内容
docker ALL(ALL) ALL安装完毕以后使用以下命令查看docker运行状态
[rootnode1 docker]# sudo systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)Active: active (running) since Fri 2023-03-10 18:03:18 CST; 11s agoDocs: http://docs.docker.comMain PID: 47284 (dockerd-current)CGroup: /system.slice/docker.service├─47284 /usr/bin/dockerd-current --add-runtime docker-runc/usr/li...└─47290 /usr/bin/docker-containerd-current -l unix:///var/run/dock...Mar 10 18:03:17 node1 dockerd-current[47284]: time2023-03-10T18:03:17.8383...
Mar 10 18:03:17 node1 dockerd-current[47284]: time2023-03-10T18:03:17.8422...
Mar 10 18:03:17 node1 dockerd-current[47284]: time2023-03-10T18:03:17.8484...
Mar 10 18:03:17 node1 dockerd-current[47284]: time2023-03-10T18:03:17.8776...
Mar 10 18:03:18 node1 dockerd-current[47284]: time2023-03-10T18:03:18.0211...
Mar 10 18:03:18 node1 dockerd-current[47284]: time2023-03-10T18:03:18.0656...
Mar 10 18:03:18 node1 dockerd-current[47284]: time2023-03-10T18:03:18.0906...
Mar 10 18:03:18 node1 dockerd-current[47284]: time2023-03-10T18:03:18.0917...1
Mar 10 18:03:18 node1 dockerd-current[47284]: time2023-03-10T18:03:18.1144...
Mar 10 18:03:18 node1 systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.以上可以看到状态是active。
要部署一个Docker Registry如果使用容器部署且使用默认配置则最简单的使用以下命令就可以将Docker Registry运行起来
docker run -d -p 5000:5000 --name registry registry:2要使用Docker Registry部署一个镜像私有仓库需要遵循以下步骤
2.1、Docker Registry安装
可以使用以下命令从Docker Hub上下载Docker Registry的官方镜像
docker pull registry:22.2、Docker Registry配置
Docker Registry的配置文件使用YAML格式编写可以通过修改配置文件来启用鉴权和认证机制以及配置存储方式等。以下是一个示例配置文件
version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:htpasswd:realm: registrypath: /auth/htpasswd在上面的配置文件中storage.filesystem.rootdirectory参数指定了存储镜像的目录http.addr参数指定了Docker Registry监听的端口号auth.htpasswd.realm参数指定了认证域的名称auth.htpasswd.path参数指定了存储用户名和密码的文件路径。
2.3、启动Docker Registry
可以使用以下命令启动Docker Registry
docker run -d \-p 5000:5000 \--restartalways \--name registry \-v /path/to/registry:/var/lib/registry \-v /path/to/config.yml:/etc/docker/registry/config.yml \registry:2其中-p参数指定了Docker Registry监听的端口号-v参数指定了存储镜像和配置文件的目录registry:2参数指定了使用的Docker Registry镜像版本。
2.4、Docker客户端配置
为了使用刚刚部署的镜像私有仓库需要在Docker客户端中配置Docker Registry的地址和认证信息。可以使用以下命令配置Docker客户端
docker login registry.example.com:5000其中registry.example.com:5000参数指定了Docker Registry的地址和端口号。
2.5、向Docker Registry上传和下载镜像
可以使用以下命令上传和下载镜像
docker tag image-name registry.example.com:5000/image-name
docker push registry.example.com:5000/image-name
docker pull registry.example.com:5000/image-name其中image-name参数指定了要上传和下载的镜像名称。注意在上传和下载镜像时需要使用Docker Registry的完整地址和端口号。
以上就是使用Docker Registry部署镜像私有仓库的步骤可以根据实际需求进行配置和使用。
三、Docker Registry鉴权和认证
Docker Registry是一个中央存储和分发Docker镜像的服务器其支持多种鉴权和认证机制包括基本认证、Bearer Token认证、AWS认证和LDAP认证等。下面我们详细介绍其中的几种常用认证和鉴权机制并给出相应的代码配置示例。
3.1、基本认证
基本认证是一种简单的HTTP认证机制它通过在HTTP头中发送Base64编码的用户名和密码来验证用户的身份。Docker Registry支持基本认证可以通过配置文件来启用。以下是一个示例配置文件
version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:htpasswd:realm: registrypath: /auth/htpasswd在上面的配置文件中auth.htpasswd.realm参数表示基本认证领域的名称auth.htpasswd.path参数表示包含用户名和密码的文件路径。我们可以使用htpasswd命令来创建用户名和密码文件例如
$ htpasswd -Bbn user1 password1 /path/to/htpasswd3.2、Bearer Token认证
Bearer Token认证是一种基于OAuth2协议的认证机制它使用访问令牌来验证用户的身份。Docker Registry支持Bearer Token认证可以通过配置文件来启用。以下是一个示例配置文件
version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:token:realm: registryservice: registryissuer: registryrootcertbundle: /path/to/root.crt在上面的配置文件中auth.token.realm参数表示Bearer Token认证领域的名称auth.token.service和auth.token.issuer参数表示服务名称和颁发者名称。auth.token.rootcertbundle参数表示根证书的路径这里可以使用自签名的证书或CA签名的证书。
3.3、AWS认证
AWS认证是一种基于AWS Identity and Access ManagementIAM的认证机制它使用AWS凭证来验证用户的身份。Docker Registry支持AWS认证可以通过配置文件来启用。以下是一个示例配置文件
version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:s3:access在上面的配置文件中auth.s3.accesskey和auth.s3.secretkey参数表示AWS凭证的访问密钥和私有密钥auth.s3.region参数表示AWS S3存储桶的区域auth.s3.bucket参数表示存储镜像的S3存储桶的名称。
3.4、LDAP认证
LDAP认证是一种基于Lightweight Directory Access ProtocolLDAP的认证机制它使用LDAP服务器中的用户信息来验证用户的身份。Docker Registry支持LDAP认证可以通过配置文件来启用。以下是一个示例配置文件
version: 0.1
log:accesslog: /var/log/registry/access.logerrorlog: /var/log/registry/error.log
storage:filesystem:rootdirectory: /var/lib/registry
http:addr: :5000headers:X-Content-Type-Options: [nosniff]
auth:ldap:endpoint: ldap://ldap.example.com:389binddn: cnadmin,dcexample,dccombindpassword: passwordsearchbase: oupeople,dcexample,dccomsearchfilter: (uid%s)在上面的配置文件中auth.ldap.endpoint参数表示LDAP服务器的地址和端口号auth.ldap.binddn和auth.ldap.bindpassword参数表示LDAP管理员的身份信息auth.ldap.searchbase参数表示用户信息存储在LDAP服务器上的基础目录auth.ldap.searchfilter参数表示查询用户信息的过滤器。
以上是常用的几种Docker Registry的鉴权和认证机制不同的认证机制在配置文件中的参数有所不同。可以根据实际需求选择相应的认证机制并进行配置。