Docker 打包 K8s镜像的应用实例

 更新时间:2025年03月18日 09:42:36   作者:姚毛毛-aione1.com  
文章介绍了如何使用Docker打包和部署Kubernetes镜像,包括准备工作、创建Dockerfile、构建镜像、测试运行、推送镜像、Kubernetes部署文件示例、部署到Kubernetes等步骤,并提供了注意事项和最佳实践,感兴趣的朋友一起看看吧

一. 准备工作

1. 安装 Docker: 官方安装文档

https://docs.docker.com/get-docker

2. 准备应用代码(示例使用 Node.js 应用)

二. 创建 Dockerfile

```dockerfile
# 使用官方基础镜像
FROM node:18-alpine
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制源代码
COPY . .
# 暴露端口
EXPOSE 8080
# 启动命令
CMD ["npm", "start"]
```

3、构建镜像(注意最后的点号)

docker build -t my-app:1.0.0 .
#查看镜像
docker images | grep my-app

4、测试运行

运行容器
docker run -d -p 8080:8080 --name my-app my-app:1.0.0
验证运行
curl <http://localhost:8080>

5、推送镜像到仓库

# 登录 Docker Hub
docker login
# 标记镜像
docker tag my-app:1.0.0 username/my-app:1.0.0
# 推送镜像
docker push username/my-app:1.0.0

6、 Kubernetes 部署文件示例

deployment.yaml

 apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: my-app
 spec:
   replicas: 3
   selector:
     matchLabels:
       app: my-app
   template:
     metadata:
       labels:
         app: my-app
     spec:
       containers:
       - name: my-app
         image: username/my-app:1.0.0
         ports:
         - containerPort: 8080
         resources:
           limits:
             memory: "512Mi"
             cpu: "500m"

service.yaml

  apiVersion: v1
  kind: Service
  metadata:
    name: my-app-service
  spec:
    selector:
      app: my-app
    ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
    type: LoadBalancer

7、部署到 Kubernetes

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
# 查看部署状态
kubectl get pods
kubectl get service

三、注意事项 ‌

  • 镜像标签‌: 避免使用 latest 标签,推荐语义化版本控制
  • ‌私有仓库‌: 如果使用私有仓库需配置 imagePullSecrets
  • ‌多阶段构建‌: 生产环境推荐使用多阶段构建减小镜像体积
  • ‌安全扫描‌: 使用 docker scan 扫描镜像漏洞
  • ‌资源限制‌: 在 Deployment 中合理配置 CPU/Memory 限制

8、常用调试命令

# 查看容器日志
kubectl logs <pod-name>
# 进入容器调试
kubectl exec -it <pod-name> -- /bin/sh
# 删除部署
kubectl delete -f deployment.yaml

四、注意事项

9、最佳实践

  • 使用 .dockerignore 文件排除不需要的文件
  • 配置健康检查(liveness/readiness probes)
  • 使用 CI/CD 流水线自动化构建和部署
  • 为不同环境维护不同的部署清单
  • 定期更新基础镜像的安全补丁

到此这篇关于 Docker 打包 K8s镜像的文章就介绍到这了,更多相关 Docker 打包 K8s内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker容器启动和停止的操作指南

    Docker容器启动和停止的操作指南

    Docker 是一个开源的应用容器引擎,允许开发者将应用及其依赖打包在一个轻量级的容器中,并在任何支持 Docker 的机器上运行,本文将详细介绍如何精确地启动和停止 Docker 容器,提供一系列常见的 Docker 启动与停止操作的代码示例,帮助你快速上手,需要的朋友可以参考下
    2025-04-04
  • 内网环境下registry搭建步骤详解

    内网环境下registry搭建步骤详解

    这篇文章主要为大家介绍了内网环境下的registry搭建步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 将spring boot应用打入docker中运行的实现方法

    将spring boot应用打入docker中运行的实现方法

    这篇文章主要介绍了将spring boot应用打入docker中运行的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • docker 如何添加证书

    docker 如何添加证书

    这篇文章主要介绍了docker 如何添加证书的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 物理机与启动的Docker容器间的目录映射方式

    物理机与启动的Docker容器间的目录映射方式

    这篇文章主要介绍了物理机与启动的Docker容器间的目录映射方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 详解docker nginx 容器启动挂载到本地

    详解docker nginx 容器启动挂载到本地

    这篇文章主要介绍了详解docker nginx 容器启动挂载到本地,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Docker多阶段镜像构建的实现

    Docker多阶段镜像构建的实现

    本篇文章主要介绍了Docker多阶段镜像构建的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Docker的MySQL容器时区问题修改

    Docker的MySQL容器时区问题修改

    这篇文章主要给大家介绍了关于Docker的MySQL容器时区问题修改的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Docker容器日志占用空间过大的解决方式

    Docker容器日志占用空间过大的解决方式

    当我们尝试查看特定 Docker 容器的日志时,通常会使用 docker logs <容器名称> 命令,,然而,有时候会发现控制台持续输出日志信息,持续时间可能相当长,直到最终打印完成,导致日志积累过多,占用了系统磁盘空间,所以本文给大家介绍了解决方法,需要的朋友可以参考下
    2024-03-03
  • Docker创建容器时目录权限踩坑

    Docker创建容器时目录权限踩坑

    这篇文章主要介绍了Docker创建容器时目录权限踩坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03

最新评论