当前位置: 首页 > article >正文

Docker 和 Kubernetes

DockerKubernetes (K8s) 是当前最流行的容器化技术,用于开发、部署和管理应用程序。它们通常一起使用,提供从开发到生产的完整生命周期管理,特别是在微服务架构和云原生应用的开发中。

1. Docker简介

Docker 是一个开源的容器化平台,它可以将应用及其所有依赖项打包在一个统一的容器中,从而简化了软件的开发、部署、运行和管理。容器化应用具有跨平台、一致性强、启动速度快等特点。

  • 容器:一个包含应用程序及其所有依赖的轻量级、可移植的单元。
  • 镜像:容器的静态文件系统,定义了容器的运行时环境。
  • Docker Engine:Docker 的运行时环境,用于构建、运行和管理容器。
  • Docker Compose:用于定义和运行多容器应用的工具。
2. Kubernetes (K8s) 简介

Kubernetes(简称 K8s)是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。它帮助开发人员管理复杂的分布式应用程序,支持多种容器运行时(如 Docker、containerd 等)。

Kubernetes 提供了以下核心功能:

  • 自动化部署:自动化容器应用的部署和升级。
  • 服务发现:为应用提供自动化的负载均衡和服务发现。
  • 自动扩展:根据负载自动扩展容器的副本数量。
  • 故障恢复:确保容器始终处于预期状态,自动修复失败的容器。
  • 存储管理:自动化持久存储的挂载和管理。

Docker 和 Kubernetes 的结合

通常情况下,Docker 被用于构建容器化的应用,而 Kubernetes 被用于部署和管理这些容器应用。Docker 提供了容器的创建与管理,而 Kubernetes 提供了容器的集群管理与调度。通过 Kubernetes,用户可以在多个主机上运行和管理 Docker 容器。

使用指南:配合命令介绍

1. Docker 使用指南
1.1. 安装 Docker
  • 在 Linux(以 Ubuntu 为例)上安装 Docker:
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get install docker-ce
    
1.2. Docker 常用命令
  • 查看 Docker 版本

    docker --version

  • 拉取 Docker 镜像

    docker pull ubuntu:latest

  • 运行 Docker 容器

    docker run -d --name my-container ubuntu:latest

  • 查看正在运行的容器

    docker ps

  • 查看所有容器(包括已停止的)

    docker ps -a

  • 进入容器

    docker exec -it my-container bash

  • 停止容器

    docker stop my-container

  • 删除容器

    docker rm my-container

1.3. Docker Compose

Docker Compose 是一个工具,允许你通过配置文件 (docker-compose.yml) 来定义和管理多容器应用。

  • 启动多容器应用

    docker-compose up -d

  • 停止并删除容器

    docker-compose down

2. Kubernetes 使用指南
2.1. 安装 Kubernetes(kubeadm 安装)
  • 在 Linux 系统中安装 Kubernetes:
    sudo apt-get update && sudo apt-get install -y apt-transport-https
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl
    
2.2. Kubernetes 常用命令
  • 查看集群状态

    kubectl cluster-info

  • 查看节点

    kubectl get nodes

  • 创建部署(例如 Nginx 部署)

    kubectl create deployment nginx --image=nginx

  • 查看 Pod 状态

    kubectl get pods

  • 暴露服务

    kubectl expose deployment nginx --port=80 --type=LoadBalancer

  • 查看服务

    kubectl get services

  • 删除 Pod

    kubectl delete pod nginx-pod

2.3. Kubernetes 重要概念
  • Pod:Kubernetes 中的基本部署单元,可以包含一个或多个容器。
  • Deployment:Kubernetes 中的一个控制器,用于管理应用程序的副本集,保证应用程序的期望状态。
  • Service:暴露在集群内或外部访问的 Kubernetes 服务,可以为多个 Pod 提供负载均衡。
3. 结合 Docker 和 Kubernetes

当你将 Docker 容器化的应用部署到 Kubernetes 集群时,Kubernetes 会自动管理容器的调度、扩展、负载均衡和故障恢复等工作。以下是一个简单的例子,展示如何将 Docker 容器部署到 Kubernetes 集群:

  1. 创建 Docker 镜像并推送到 Docker Hub

    docker build -t your-dockerhub-username/your-image-name .
    docker push your-dockerhub-username/your-image-nam

  2. 在 Kubernetes 上部署应用: 创建一个 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: your-dockerhub-username/your-image-name
            ports:
            - containerPort: 80
    

    然后,使用 kubectl 创建这个部署:

    kubectl apply -f deployment.yaml

  3. 暴露服务: 创建一个服务文件 service.yaml

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

    然后应用这个服务:

    kubectl apply -f service.yaml

总结

  • Docker 用于容器化应用程序,并简化应用程序的构建、部署和管理。
  • Kubernetes 用于大规模的容器编排,提供自动化部署、扩展和管理。
  • Docker 和 Kubernetes 配合使用时,Docker 提供了容器的基础设施,Kubernetes 管理这些容器并确保应用的高可用性和可扩展性。

通过这两者的结合,开发人员和运维人员可以更加高效、灵活地管理和部署现代化应用。


http://www.kler.cn/a/514140.html

相关文章:

  • 初始SpringBoot:详解特性和结构
  • 以 RFID 为钥,开启民兵装备管理的科技之门
  • pip 相关
  • ESP32下FreeRTOS实时操作系统使用
  • 《Linux服务与安全管理》| 邮件服务器安装和配置
  • WGAN - 瓦萨斯坦生成对抗网络
  • NextJs - ServerAction获取文件并处理Excel
  • K8s master节点初始化失败报错
  • UI样式表(悬停hover状态样式和按下pressed)
  • FPGA 时钟树缓存布局布线
  • Linux C\C++编程-文件位置指针与读写文件数据块
  • HarmonyOS NEXT:华为分享-碰一碰开发分享
  • Linux内核源码目录结构
  • Linux:文件描述符fd、系统调用open
  • 【Unity3D】3D物体摆放、场景优化案例Demo
  • AI 在制造行业的探究
  • 使用 OpenCV 和 Python 轻松实现人脸检测
  • C语言程序设计十大排序—选择排序
  • [unity 高阶]使用ASE制作一个cubed的skybox的shader,跟做版本
  • ChatGPT开发教程指南
  • HTML 元素详解:从入门到精通
  • 数据结构 链表2
  • 深度学习python基础(第二节) 分支语句和循环语句
  • 国家安全部发布《网络安全法》解读
  • 基于单片机的智能台灯设计
  • Spring 6 第6章——单元测试:Junit