前端领域的 Docker 与 Kubernetes

本文介绍了Docker的基础知识,包括安装、Docker网络模式和Nginx服务的运行。接着深入探讨了Docker的工作原理,利用namespace和cgroup实现资源隔离。随后,文章转向Kubernetes,阐述了K8S如何简化容器编排,以及在前端领域的优势,如蓝绿发布等。通过K8S,可以实现服务的高可用和自动化运维,推动前端微服务化的发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看完本文希望读者能够了解到,Docker 的基本原理,Kubernetes 是怎么工作的, 对于前端 Kubernetes 有哪些优势与玩法。

Docker 和传统部署方式最大的不同在于,它将不会限制我们使用任何工具,任何语言,任何版本的 runtime,Docker 将我们的应用看成一个只提供网络服务的盒子(也即容器),Kubernetes 则是对这些盒子进行更多自动化的操作,自动创建,自动重启,自动扩容,自动调度,这个过程称之为容器编排。

在今天,容器编排技术给 Web 应用带来了巨大的灵活性,让我们轻松创建需要的程序对外提供服务。和传统的 IaaS 相比,不需要去关心云主机申请,云主机配置等信息,也不需考虑云主机故障导致的服务不可用,由 Kubernetes 的副本控制器帮我们完成云主机故障发生后容器迁移。

本篇文章和大家一起,回顾一下从 Docker 到 Kubernetes 的一些相关内容,最后再看看 Kubernetes 在前端领域有哪些优势和新玩法。

Docker 安装

如果是 Windows10, Windows7 将会使用 VirtualBox 安装 Linux 作为 Docker 的宿主机。
Windows10 Pro 会使用 Hyper-V 安装 Linux 作为 Docker 的宿主机。

Docker 基本信息

默认 Docker 存储位置为 /var/lib/docker,所有的镜像,容器,卷都会在这里,如果你使用了多硬盘,或者挂载了 SSD 不在 / 上,需要修改默认路径(graph)到合适位置,配置文件为 /etc/docker/daemon.json, 例如

{
  "bip": "192.168.0.1/16",
  "graph": "/mnt/ssd/0/docker"
}

Docker 在安装过程中会自动创建好 docker0 网卡,并分配 ip 给他。
上面指定的 bip 是指定了 docker0 网卡的 ip , 如果不指定那么在创建 docker0 时会自动根据主机 ip 选取一个合适的 ip,不过由于网络的复杂性,特别是机房网络内很容易发现地址选取冲突,这时候就需要手动指定 bip 为一个合适的值。docker 的 ip 选取规则这篇文章分析的很好, 可以参考 https://blog.csdn.net/longxin…

安装并启动后可以通过 docker info 查看Docker的一些配置信息。

Docker hello world

Docker 检查安装是否正常的第一个测试命令很简单。

docker run hello-world

首先他会去 Docker Hub 上下载 hello-world 这个镜像,然后在本地运行这个镜像,启动后的这个 Docker 服务称之为容器。容器创建后就会执行规定的入口程序,程序执行向流中输出了一些信息后退出,容器也会随着这个入口程序的结束而结束。

  • 查看所有容器
docker ps -a

输出如下:

cf9a6bc212f9        hello-world                     "/hello"                 28 hours ago        Exited (0) 3 min

第一列为容器 id, 很多针对容器的操作都需要这个 id, 例如下面一些常用的操作。

docker rm container_id
docker stop container_id
docker start container_id
docker describe container_id

这里有个docker start container_id, 启动一个容器,说明容器即使退出后其资源依然存在,还可以使用docker start重启这个容器。要想让容器退出后自动删除可以在docker run时指定--rm参数。

当我们运行这个命令时 Docker 会去下载 hello-world 这个镜像缓存到本地,这样当下次再运行这条命令时就不需要去源中下载。

  • 查看本地镜像
docker images

运行 Nginx

Nginx 作为使用广泛的 Web 服务器在 Docker 世界里也是同样流行, 常常用来启动一个网络服务验证网络配置情况, 使用下面这条命令启动 Nginx 容器 docker run --rm -p 80:80 nginx

访问 localhost:80 端口即可看到 Nginx 服务启动, 控制台中可以看到 Nginx 服务的日志输出。

因为 Docker 内的网络与外部世界是隔离的,所以我们需要手动指定端口转发 -p 80:80 来显式将宿主机的80(前)转发到容器的80端口, 暴露端口是我们提供服务最常用的使用方式之一。 也有一些其他类型的服务,例如日志处理,数据收集需要共享数据卷才能提供服务,所有这些都需要我们在启动容器时显式指定。

一些常见的启动参数:

  • -p 本机端口:容器端口 映射本地端口到容器
  • -P 将容器端口映射为本机随机端口
  • -v 本地路径或卷名:容器路径 将本地路径或者数据卷挂载到容器的指定位置
  • -it 作为交互式命令启动
  • -d 将容器放在后台运行
  • --rm 容器退出后清除资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知爷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值