网站首页 > 技术文章 正文
Kubernetes学习路上的那些事儿,很有必要分享出来
为什么要搭建私有镜像仓库
无论我们使用docker pull 【具体镜像名称】命令拉取镜像,还是在Kubernetes中编写yaml文件的时候,使用image: 【具体镜像名称】,其实都是从docker公共镜像仓库拉取的,一般公共镜像仓库中有很多通用的镜像文件,比如MySQL,Redis,Nginx,busybox等等。
但是对于一个私有项目来说,不可能将定制化的应用镜像放到docker的公共镜像仓库中,这时,搭建一个私有镜像仓库就非常有必要了。
本实验主要测试一下在DockerHub上创建个人镜像仓库的操作。
实验过程
实验准备:
1)DockerHub,需要注册账号,本次实验使用的账号tianyangqi.
2)Docker环境,使用docker命令测试镜像
3)K8S集群环境,用于测试从私有镜像拉取busybox镜像
步骤一:在Docker环境下,向DockerHub上推送和拉取自定义镜像。进入docker环境,确定安装了docker,然后查看本地镜像。
docker version //查看安装的Docker版本
docker images //查看下载到本地的镜像
既然看到了busybox镜像,那么就用这个镜像来制作“自定义镜像”,其实就是重命名一下。如果要制作一个纯的“自定义镜像”,那就要自己开发代码,然后通过dockerfile打包成镜像,由于本实验主要的目的是演示镜像仓库,所以就来个不纯的吧。
docker tag [本地镜像id] [账号]/[自定义镜像名称] //打包镜像
然后推送自定义镜像到DockerHub中的tianyangqi账户下的镜像仓库中,在推动镜像之前,需要通过docker login命令登录DockerHub,根据提示输入用户名和密码。否则访问会被拒绝。
docker push tianyangqi/busybox-test:latest //推送镜像
登录DockerHub官网,然后可以看到已推送的“自定义镜像”——busybox-test.
验证一下拉取镜像,为了避免混淆,先删除本地刚才打包的“自定义镜像”——busybox-test,然后再从DockerHub的tianyangqi个人镜像仓库中拉取镜像。
docker pull tianyangqi/busybox-test:latest //拉取镜像
步骤二:通过k8s集群,从DockerHub的个人镜像仓库拉取镜像。首先仍然确认docker login的,只有登录了,才会在当前账号的家目录下生成一个config.json文件,在k8s集群中要通过这个json文件制作secret凭证。
cat ~/.docker/config.json | base64 -w 0 //务必记录好生成的这串信息,不要换行
然后新建一个secret的yaml文件,就叫myregistry-secret.yaml.
apiVersion: v1
kind: Secret
metadata:
name: mysecret
namespace: default
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: //替换成刚才用config.json生成的那串老长的信息。
创建并检查secret凭证
kubectl apply -f myregistry-secret.yaml //创建secret
kubectl get secret mysecret //查看secret
创建Pod资源来测试一下,看看是否可以从DockerHub的tianyangqi镜像仓库中拉取busybox-test镜像。既然前面已经演示过Deployment资源了,就索性用Deployment创建pod完成测试。此测试文件命名为dockerhub-myregistry-dep.yaml.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myreg-dep
spec:
replicas: 2
selector:
matchLabels:
app: busybox
template:
metadata:
labels:
app: busybox
spec:
containers:
- name: busybox
image: tianyangqi/busybox-test:latest
imagePullSecrets:
- name: mysecret
相关代码的主要解释如下图:
创建测试deployment资源,查看pod创建信息。
kubectl apply -f dockerhub-myregistry-dep.yaml //创建
kubectl get pod //查看Pod
kubectl describe pod [pod名称] //查看具体pod的描述信息
“自定义镜像”(tianyangqi/busybox-test)确实拉取成功了,之所以由Deployment创建的两个pod的运行状态不是Running,这跟busybox镜像本身有关,此镜像就是一个包含很多Linux命令的工具包,安装完成后就结束了。
实验总结
DockerHub中的tianyangqi相当于一个线上的私有镜像仓库,可以推送自定义镜像到该仓库中,而docker本身是负责推送和拉取镜像,以及打包镜像,k8s中的Secret资源就是一个在集群中的登录凭证,相当于令牌或密钥,里面包含了tianyangqi账号的相关登录信息;最后使用deployment创建pod测试镜像的拉取。
最后附上一个更换了Nginx镜像的实验截图,即tianyangqi/nginx-test(基于nginx镜像自定义的)。可以看到,Pod运行正常,处于Running状态了。
猜你喜欢
- 2024-09-29 Docker实战007:docker仓库使用详解
- 2024-09-29 Docker 简介(docker-it)
- 2024-09-29 Docker Hub 遭入侵,19 万帐号被泄露
- 2024-09-29 终于有人把Docker讲清楚了,Docker入门教程,原来这么简单...
- 2024-09-29 Docker镜像管理(docker镜像管理PPT)
- 2024-09-29 Docker从入门到精通:Docker pull命令学习
- 2024-09-29 DockerDockerfile深度解析(dockerfile sh)
- 2024-09-29 Docker架构最全详解(图文全面总结)
- 2024-09-29 docker的镜像和仓库(常用docker镜像仓库)
- 2024-09-29 DockerHub 镜像仓库的使用(docker hub 镜像站点)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)