Docker Desktop 版本助力 Kubernetes 集群,一键部署不再是梦

简介: 对于那些还没有尝试过 Docker EE 2.0 的用户来说,这篇文章的重点在于详细介绍了如何在 Docker for Desktops 中使用 Docker compose 文件来将应用程序直接部署到 Kubernetes 集群上。

screenshot

本文首发自“Docker公司”公众号(ID:docker-cn)
编译丨小东
每周一、三、五 与您不见不散!


上周,KubeCon 欧洲大会在哥本哈根成功举办,让我们来回顾那些在 Docker 和 Kubernetes 读者中最受欢迎的帖子吧。对于那些还没有尝试过 Docker EE 2.0 的用户来说,这篇文章的重点在于详细介绍了如何在 Docker for Desktops 中使用 Docker compose 文件来将应用程序直接部署到 Kubernetes 集群上。


如果在您的桌面(Docker for Mac 或 Docker for Windows Desktop)上运行的是 Docker 的尝鲜版本,那么现在您就可以通过点击一个按钮来构建单节点的 Kubernetes 集群了。虽然我不是开发人员,但我认为这对于已经在 Macbook 或 Windows 笔记本电脑上使用 Docker 的数百万开发人员来说是个好消息,因为他们现在已经拥有了完全兼容的 Kubernetes 集群,无需安装任何其他辅助工具。

使用 Docker 来构建容器化应用程序的开发人员经常会使用构建 Docker Compose 文件的方式来部署应用程序。随着将 Kubernetes 集成到 Docker 的产品线,某些开发人员想要利用现有的 Docker Compose 文件,在 Kubernetes 中来部署这些应用程序。

通过 Docker Desktop(以及 Docker 企业版),您可以使用 Docker Compose 将应用程序直接部署到 Kubernetes 集群上。


下面我将详细介绍它的工作原理:

假设我有一个简单的 Docker Compose 文件,如下面所示,它包含三层应用:Web、Words 和 db。

注意:我们的 Web 前端设置为从主机上的 80 端口路由到服务器的 80 端口(以及随后的底层容器)。另外,我们的“Words”服务将会开启 5 个副本。

services:

web:

build: web

image: dockerdemos/lab-web

volumes:

- "./web/static:/static"

ports:

- "80:80"

words:

build: words

image: dockerdemos/lab-words

deploy:

replicas: 5

endpoint_mode: dnsrr

resources:

limits:

memory: 16M

reservations:

memory: 16M

db:

build: db

image: dockerdemos/lab-db

我使用的是 Docker for Mac 版本,并将 Kubernetes 设置为我的默认编排工具。为了部署这个应用程序,我仅用了“docker stack deploy”命令,并向其提供了一个名为“words.yaml”的 Compose 文件以及一个名为“words”的应用栈。真正让人感到惊喜的是,它与 Docker Swarm 所使用的命令完全相同,如下所示:

$ docker stack deploy --compose-file words.yaml words

Stack words was created

Waiting for the stack to be stable and running...

- Service db has one container running

- Service words has one container running

- Service web has one container running

Stack words is stable and running

使用 Compose 文件创建的 deployment、pods 和 services 都可以通过使用“kubectl”命令来查看,如下所示:

$ kubectl get deployment

NAME     DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  AGE

db       1        1        1           1          2m

web      1        1        1           1          2m

words    5        5        5           5          2m

$ kubectl get pods

NAME                    READY    STATUS   RESTARTS  AGE

db-5489494997-2krr2     1/1      Running  0         2m

web-dd5755876-dhnkh     1/1      Running  0         2m

words-86645d96b7-8whpw  1/1      Running  0         2m

words-86645d96b7-dqwxp  1/1      Running  0         2m

words-86645d96b7-nxgbb  1/1      Running  0         2m

words-86645d96b7-p5qxh  1/1      Running  0         2m

words-86645d96b7-vs8x5  1/1      Running  0         2m

$ kubectl get services

NAME           TYPE         CLUSTER-IP      EXTERNAL-IP   PORT(S)      AGE

db             ClusterIP    None                   55555/TCP    2m

web            ClusterIP    None                   55555/TCP    2m

web-published  LoadBalancer 10.104.198.84       80:32315/TCP 2m

words          ClusterIP    None                   55555/TCP    2m

如果您查看了上面的服务列表,那么您可能会注意到那些乍一看有点奇怪的事情。没错就是 “web” 和“web-published”服务。其中“web” 服务负责应用程序内部通信,而“web-published”服务(这是一个由 Docker for Mac 中的 vpnkit 所支持的负载均衡器)将会把我们的 Web 前端展现给全世界。


所以如果我们现在访问 http:// localhost:80,那么我们就可以看到正在运行的应用程序了。您可以从下列渠道在 Elton 录制的视频(全长 8 分钟)中看到整个过程:

Docker 官方入口:http://t.cn/R3Z1WJq


screenshot

现在,如果我们想要删除服务,您可能首先想到的是使用“kubectl”命令来删除部署。但是,实际上您可以使用“docker stack rm”命令,该命令将删除我们引入应用栈时所创建的所有应用,如下所示:

$ docker stack rm words

Removing stack: words

$ kubectl get deployment

No resources found

对我来说,最惊喜的就是整个过程都可以使用 Docker EE来完成,我只需要将 Compose 文件直接部署到 Docker EE 的用户界面就可以了。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
13天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
55 2
|
15天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
9天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
37 1
|
13天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
13天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
13天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
21天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
55 1
|
8天前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
23 0
|
存储 运维 安全
Docker 发布第一个正式版本 1.0
2013年3月20日,我们发布了 Docker 的首个版本。15个月后,我们收获颇丰:既有来自超过 460 位贡献者的 8741 条提交、两百七十五万次下载、超过一万四千个 Docker 化的应用,也有超过一万名用户反馈他们使用 Docker 的经历,从在单台笔记本上运行单个容器,到在云中使用数千个容器进行生产,不一而足。
238 0
Docker 发布第一个正式版本 1.0
|
11天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
下一篇
无影云桌面