目录
1.搭建Docker镜像仓库:
参考文档:
搭建Docker镜像仓库_Kareza's Blog-CSDN博客_搭建docker镜像仓库
你必须知道的Docker镜像仓库的搭建 - EdisonZhou - 博客园 (cnblogs.com)
生成用户名密码:配置带用户权限的docker registry v2 - adolfmc - 博客园 (cnblogs.com),docker registry 2 with tls and basic authentication-布布扣-bubuko.com
本文是在k8s集群中的一个节点搭建了Docker镜像仓库。并且是使用docker镜像registry去搭建的,具体的搭建指令如下:
关于使用https和创建账号密码,请看上面的参考文章。
带https证书和账户密码:
docker run -d -p 5000:5000 --restart=always -v /docker/registry/auth:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -e REGISTRY_HTTP_TLS_CERTIFICATE=/docker/registry/registry.crt
-e REGISTRY_HTTP_TLS_KEY=/docker/registry/registry.key -v /usr/local/dockerregistry:/var/lib/registry/ registry:latest
有账号密码,但是不带https证书:
docker run -d -p 5000:5000 --restart=always -v /docker/registry/auth:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /usr/local/dockerregistry:/var/lib/registry/ registry:latest
Docker镜像仓库访问:
内网地址:10.***.**.208:31000 账号密码:crm/*******
外网地址:119.***.***.184:31000 账号密码:crm/*******
访问docker hub:
curl -u crm:****** -XGET http://10.17.64.208:5000/v2/_catalog
2.生成镜像:
我们可以手动生成镜像.
- 将生成的jar包以及Dockerfile文件上传到任何一台K8s服务器,将两个文件放到同一文件夹
- 然后执行生成docker镜像指令: docker build -t docker镜像名称 .
Docker镜像上传和下载:
参考文档:Docker: 上传镜像至私有仓库 - SegmentFault 思否
参考文档:Docker创建镜像以及私有仓库_许你一生的远方的技术博客_51CTO博客
接下来要将生成的docker镜像上传到私有Docker镜像仓库:
给上面生成的Docker镜像 brucetest 打tag:
docker tag brucetest:1.0 10.17.*****.208:31000/brucetest:1.0
登录我们的私有docker镜像仓库:
docker login 10.17.****.208:31000
上传镜像到我们的私有docker镜像仓库
docker push 10.17.*****.208:31000/brucetest:1.0
在其它服务器上,将镜像pull下来:
docker pull 10.17.*****.208:31000/brucetest:1.0
访问docker 镜像仓库,看看我们上传镜像是否成功:
curl -u crm:****** -XGET http://10.17.*****.208:31000/v2/_catalog
3.华为云创建Pod:
1.打开云容器引擎CCE
2.体验新版:
3.打开我们的k8s集群:
4.配置项与秘钥:
为我们的私有docker镜像仓库,创建一个秘钥,其实就是配置怎样去访问私有docker镜像仓库。
这是一个已经创建好的秘钥:
5.工作负载 -> 命名空间
6.镜像创建(其实就是创建Pod)
点击页面右上角的“镜像创建”
填写基本信息:
填写容器配置信息:
“镜像名称”填写我们上传到私有docker镜像仓库的镜像名字 -> 10.17.******.208:31000/brucetest:1.0;”镜像访问凭证”选择上面我们为自己的私有docker镜像仓库配置的秘钥。
服务配置:
然后,为将要创建的Pod创建一个服务service,做服务发现(为了在Pod外部访问该Pod,k8s集群或者外网)。
先配置“集群内访问”,“集群内访问”是为了实现在k8s集群内,任何一个节点都可以访问该Pod,其实就是做了Pod端口到节点端口的映射。但是此时外网是不能够访问的。
为了实现外网访问,我们需要再配置节点访问。
“服务亲和”选择集群级别,这样的话只要k8s集群中任何一个节点绑定了EIP(弹性公网IP),那么都可以实现外网访问该Pod。
查看创建的Pod(无状态负载)以及容器组:
7.服务发现:
创建好的Pod(无状态负载)怎样访问呢? 使用上面创建Pod过程中创建的服务service -- brucetest-new,每个Pod对应有一个service,一一对应。
Pod,service,deployment controller(或者其它类型的controller),这是一个k8s中的标配。
服务service中给出了访问Pod的ip和端口 ,例如我们上面创建的brucetest-new,对应的是10.247.****.214:8090。
登录任意k8s节点去访问创建的Pod,然后执行下面指令(访问微服务的API)
curl http://10.247.******.214:8090/hello/world(根据具体的微服务的API)
成功返回,证明这个Pod可以在k8s集群的任何节点进行访问。
关于外网访问:
目前只支持k8s集群内访问,k8s集群内任何节点都可以访问创建的Pod,不管Pod具体被部署到哪个节点。但是想要实现集群外访问,需要将k8s集群内的任意一个节点,绑定一个EIP,就是给该节点的的网卡绑定一个EIP,EIP公网IP,目前只有内网IP。这样就能实现外网访问。
4.其它基础知识:
运行helloworld 镜像(使用公共docker hub,了解docker镜像下载运行):
Docker安装以及运行第一个HelloWorld_韶shls的博客-CSDN博客_docker helloworld