镜像仓库registory中的秘钥管理

2024-04-22 02:20

本文主要是介绍镜像仓库registory中的秘钥管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

镜像仓库中的秘钥管理

1 生成密钥

在使用私有镜像拉取镜像时,需要为私有镜像仓库创建一个镜像仓库的密钥,并在创建容器中进行引用。创建镜像仓库的语法和格式:

kubectl create secret docker–registry <regsecret-name> —docker–server=<your–registry–server> —docker–username=<your–name> —docker–password=<your–pword> —docker–email=<your–email>
<regsecret-name>:所创建的私有镜像仓库密钥的名称;
<your-registry-server>:为镜像仓库的服务器地址;
<your-name>:登录镜像仓库的用户名;
<your-pword>:登录镜像仓库的密码;
<your-email>:用户的邮箱地址。

假设登录私有镜像仓库的用户命名为admin、密码为admin、邮箱地址为admin@meng.com。则可以通过执行下面的命令创建私有镜像仓库的密钥:

$ kubectl create secret docker-registry myregsecret --docker-server=192.168.10.12:8484 \ --docker-username=admin --docker-password=admin --docker-email=admin@meng.com

使用 Apache 的 htpasswd 来创建加密文件

# yum install -y httpd-tools

# htpasswd -Bbn admin admin > /data/docker-auth/htpasswd

#启动

docker run -p 8484:5000 \

--restart=always \

--name registry \

-v /data/registry:/var/lib/registry \

-v /data/auth/:/auth/ \

-e "REGISTRY_AUTH=htpasswd" \

-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \

-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \

-d registry

#/etc/docker/daemon.json

{

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

"registry-mirrors":["https://mirror.aliyuncs.com"],

"insecure-registries":["192.168.10.12:8484"]

}

#重启docker

systemctl daemon-reload

systemctl restart docker

登录 Docker Registry

登录可以是免交互式,也可以是交互式的

docker login -u 用户名 -p 密码 ip:端口 # 一般不建议使用明文密码

docker login -u 用户名 -p ip:端口 # 不输入密码,回车后,使用交互式输入密码(输入的密码不会显示)

docker login ip:端口 # 不输入密码和用户名,回车后,使用交互式输入用户名和密码(输入的密码不会显示)

登录

docker login 192.168.10.12:8484

admin

admin

[root@master01 data]# docker login 192.168.10.12:8484

Username: admin

Password:

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

登出

docker logout 192.168.10.12:8484

[root@master01 data]# docker logout 192.168.10.12:8484

Removing login credentials for 192.168.10.12:8484

测试镜像

docker pull nginx

docker tag nginx:latest 192.168.10.12:8484/nginx:v1.0.0

[root@master01 data]# docker pull 192.168.10.12:8484/nginx:v1.0.0

Error response from daemon: Head "http://192.168.10.12:8484/v2/nginx/manifests/v1.0.0": no basic auth credentials

docker push 192.168.10.12:8484/nginx:v1.0.0

#去除污点

kubectl taint nodes master01 node-role.kubernetes.io/master

#删除本地镜像

docker rmi 192.168.10.12:8484/nginx:v1.0.0

#nginx.yaml文件

[root@master01 registry]# cat nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx-v1
spec:replicas: 1selector:matchLabels:app: svc-nginx-30083
template:metadata:labels:app: svc-nginx-30083spec:containers:- name: svc-nginx-v1image: 192.168.10.12:8484/nginx:v1.0.0imagePullPolicy: IfNotPresentports:- containerPort: 80

#创建nginx

[root@master01 registry]# kubectl create -f nginx.yaml

deployment.apps/deploy-nginx-v1 created

#查询状态

[root@master01 registry]# kubectl get pods

NAME READY STATUS RESTARTS AGE

deploy-nginx-v1-85979f6644-jnxnb 0/1 ImagePullBackOff 0 44s

[root@master01 registry]# kubectl describe pods deploy-nginx-v1-85979f6644-jnxnb

Normal Pulling 20s (x3 over 57s) kubelet Pulling image "192.168.10.12:8484/nginx:v1.0.0"

Warning Failed 20s (x3 over 57s) kubelet Failed to pull image "192.168.10.12:8484/nginx:v1.0.0": rpc error: code = Unknown desc = Error response from daemon: Head "http://192.168.10.12:8484/v2/nginx/manifests/v1.0.0": no basic auth credentials

Warning Failed 20s (x3 over 57s) kubelet Error: ErrImagePull

Normal BackOff 7s (x4 over 57s) kubelet Back-off pulling image "192.168.10.12:8484/nginx:v1.0.0"

Warning Failed 7s (x4 over 57s) kubelet Error: ImagePullBackOff

#修复

1.本机登录镜像仓库

2.拉取镜像时增加secret

创建secret

kubectl create secret docker-registry registry-10.12 --docker-server=192.168.10.12:8484 --docker-username=admin --docker-password=admin

查看secret

[root@master01 registry]# kubectl get secret

NAME TYPE DATA AGE

default-token-bmtqm kubernetes.io/service-account-token 3 26h

registry-10.12 kubernetes.io/dockerconfigjson 1 10s

#查看详情

kubectl describe secret registry-10.12

kubectl get secret registry-10.12 -o yaml

#修改nginx.yaml文件,增加参数

imagePullSecrets:

- name: registry-10.12

apiVersion: apps/v1
kind: Deployment
metadata:name: deploy-nginx-v1
spec:replicas: 1selector:matchLabels:app: svc-nginx-30083template:metadata:labels:app: svc-nginx-30083spec:containers:- name: svc-nginx-v1image: 192.168.10.12:8484/nginx:v1.0.0imagePullPolicy: IfNotPresentports:- containerPort: 80imagePullSecrets:- name: registry-10.12

#应用更新

kubectl apply -f nginx.yaml

#

[root@master01 registry]# kubectl get secret

NAME TYPE DATA AGE

default-token-bmtqm kubernetes.io/service-account-token 3 26h

registry-10.12 kubernetes.io/dockerconfigjson 1 21m

[root@master01 registry]# kubectl delete secret registry-10.12

secret "registry-10.12" deleted

[root@master01 registry]# kubectl get secret

NAME TYPE DATA AGE

default-token-bmtqm kubernetes.io/service-account-token 3 26h

[root@master01 registry]# ls

nginx.yaml

[root@master01 registry]# kubectl delete -f nginx.yaml

deployment.apps "deploy-nginx-v1" deleted

[root@master01 registry]# ls

nginx.yaml

[root@master01 registry]# kubectl get pods

No resources found in default namespace.

[root@master01 registry]# kubectl create secret docker-registry registry-10.12 --docker-server=192.168.10.12:8484 --docker-username=admin --docker-password=admin

secret/registry-10.12 created

[root@master01 registry]# kubectl get secret

NAME TYPE DATA AGE

default-token-bmtqm kubernetes.io/service-account-token 3 26h

registry-10.12 kubernetes.io/dockerconfigjson 1 8s

[root@master01 registry]# kubectl apply -f nginx.yaml

deployment.apps/deploy-nginx-v1 created

[root@master01 registry]# kubectl get pods

NAME READY STATUS RESTARTS AGE

deploy-nginx-v1-56447d94c6-5n2z6 1/1 Running 0 2s

这篇关于镜像仓库registory中的秘钥管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/924608

相关文章

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

使用国内镜像源优化pip install下载的方法步骤

《使用国内镜像源优化pipinstall下载的方法步骤》在Python开发中,pip是一个不可或缺的工具,用于安装和管理Python包,然而,由于默认的PyPI服务器位于国外,国内用户在安装依赖时可... 目录引言1. 为什么需要国内镜像源?2. 常用的国内镜像源3. 临时使用国内镜像源4. 永久配置国内镜

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

Linux内存泄露的原因排查和解决方案(内存管理方法)

《Linux内存泄露的原因排查和解决方案(内存管理方法)》文章主要介绍了运维团队在Linux处理LB服务内存暴涨、内存报警问题的过程,从发现问题、排查原因到制定解决方案,并从中学习了Linux内存管理... 目录一、问题二、排查过程三、解决方案四、内存管理方法1)linux内存寻址2)Linux分页机制3)

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用