一般公司开发的image一般放在私有仓库,不对外开放。

1. 在阿里云创建一个私有镜像库,并构建一个image:

registry.cn-shenzhen.aliyuncs.com/koza/test:latest

创建阿里云镜像私有仓库和构建image方法参考:https://dev.aliyun.com/


2. docker 拉取私有镜像的方法:

    a. 登陆私有仓库 

mac-temp:~ test$ docker login https://registry.cn-shenzhen.aliyuncs.com
Username: user-test
Password: xxxxxx
Login Succeeded

    b. 拉取镜像:

       docker pull registry.cn-shenzhen.aliyuncs.com/koza/test:latest

    c. 保存私有仓库的登陆信息文件位置,如果不logout ,下次拉取镜像就不再需要输入账号和密码:

        cat ~/.docker/config.json

     这种方式,在kubernetes 中使用deployment定义一个pod,是不能下载镜像成功的。

3. 在kubernetes 中拉取私有仓库:

   a. 创建保存仓库地址和密码的secret: 

kubectl create secret docker-registry registry-secret --docker-server=registry.cn-shenzhen.aliyuncs.com --docker-username=user-test --docker-password=xxxxxx --docker-email=xxx@xxx.com -n default
--docker-server: 仓库地址
--docker-username: 仓库登陆账号
--docker-password: 仓库登陆密码
--docker-email: 邮件地址(选填)
-n 命名空间

  b. 在deployment.yml加入拉取镜像的密钥:

   ... 
    spec:
      serviceAccountName: test
      imagePullSecrets:
      - name: registry-secret
      containers:
      - name: test
        image: registry.cn-shenzhen.aliyuncs.com/koza/test:latest
   ...

imagePullSecrets 定义拉取镜像使用的secret。

参考:https://kubernetes.io/docs/concepts/containers/images/

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐