Windows安装Docker Desktop开启 Kubenetes制作并部署本地镜像

1、安装Docker Desktop

docker desktop官方下载链接,下载后一路点下来安装就好了。

2、制作本地镜像

跟着docker步骤制作镜像,需要先配置docker 镜像源,因为网络问题

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": true,
  "dns": [
    "8.8.8.8",
    "8.8.4.4"
  ],
  "experimental": false,
  "features": {
    "buildkit": false
  },
  "insecure-registries": [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://dockerproxy.com",
    "https://gst6rzl9.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "https://mirrors.tuna.tsinghua.edu.cn/",
    "http://mirrors.sohu.com/"
  ]
}

git clone https://github.com/docker/welcome-to-docker

cd welcome-to-docker

检查dockerfile,并执行

docker build -t welcome-to-docker .

制作好之后,images列表就有了:


 

3、在docker desktop运行镜像

 在Images列表,找到镜像,点击三角形run,指定端口,就可用运行。

例如名字是hello-docker,端口是8090,运行后,就会在Containers中出现,可查看日志、执行命令。

3、开启Kubenetes

如果需要Kubenetes管理镜像,可用在docker desktop开启,因为网络原因,要从阿里云镜像源下载kubenetes的镜像。

clone  k8s-for-docker-desktop 这个项目,找到 load_images.ps1 这个 powershell 文件,直接运行,

在powershell中执行

./load_images.ps1 

如果没有权限,可用先执行

Set-ExecutionPolicy RemoteSigned

images.properties 文件中列到的镜像可以看到kubenetes的版本,注意要与Docker Desktop的相同。

这样就把kubenetes的镜像拉下来了。

然后点击设置,启用Kubenetes

Apply&Restart之后,左下角就看见Kubenetes running了。

4、在Kubenetes运行镜像

刚刚制作的镜像要在kubenetes运行,就需要一个k8s.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-docker-deployment # 部署的名称
  namespace: default
  labels:
    app: hello-docker  # 给资源打标签,便于筛选和管理
spec:
  replicas: 2  # 定义副本数量以确保高可用
  selector:
    matchLabels:
      app: hello-docker  # 匹配 Pod 的标签,确保服务与 Pod 绑定
  template:
    metadata:
      labels:
        app: hello-docker  # Pod 的标签,需与 selector 对应
    spec:
      containers:
        - name: hello-docker  # 容器名称
          imagePullPolicy: Never
          image: welcome-to-docker:latest  # 使用构建的镜像名称和标签,从远程仓库拉取镜像
          ports:
            - containerPort: 3000  # 容器内部监听的端口
          env:
            - name: FLASK_APP
              value: "app.py"  # 设置 Flask 的主程序文件
            - name: FLASK_ENV
              value: "production"  # 设置 Flask 的运行环境
            - name: PYTHONDONTWRITEBYTECODE
              value: "1"  # 禁止生成 .pyc 文件
            - name: PYTHONUNBUFFERED
              value: "1"  # 设置 Python 日志为非缓冲模式
          resources:  # 资源限制
            requests:
              memory: "128Mi"  # 请求的最小内存
              cpu: "250m"  # 请求的最小 CPU
            limits:
              memory: "256Mi"  # 最大允许使用的内存
              cpu: "500m"  # 最大允许使用的 CPU
          livenessProbe:  # 存活探针,用于检测服务是否存活
            httpGet:
              path: "/"  # 检测的路径
              port: 3000  # 检测的端口
            initialDelaySeconds: 5  # 初始延迟
            periodSeconds: 10  # 检测间隔
          readinessProbe:  # 就绪探针,用于检测服务是否准备好接收流量
            httpGet:
              path: "/"  # 检测的路径
              port: 3000  # 检测的端口
            initialDelaySeconds: 5  # 初始延迟
            periodSeconds: 10  # 检测间隔
      restartPolicy: Always  # 容器策略:始终重启
---
apiVersion: v1
kind: Service
metadata:
  name: hello-docker-service # 服务的名称
  labels:
    app: hello-docker  # 标签与 Deployment 一致
spec:
  selector:
    app: hello-docker  # 匹配 Deployment 的标签
  ports:
    - protocol: TCP
      nodePort: 30008  # 可以省略,Kuberrnetes 会自动分配一个端口 范围 30000-32767
      port: 3000  # 服务暴露的端口
      targetPort: 3000  # 转发到容器的端口
  type: NodePort    # 服务类型,NodePort 通过在每个 Node 上打开一个特定端口,将外部请求转发到集群内部的Service,进而达到后端的Pod

然后执行命令即可(这里本地运行的关键是yaml的  imagePullPolicy: Never,不然就要将镜像推送到docker仓库才行)

kubectl create -f k8s.yaml

 因为k8s.yaml定义了30008端口映射3000,所以使用http://localhost:30008/访问即可:

参考资料:在 Docker Desktop 中启用 K8s 服务 - 墨墨墨墨小宇 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值