跳到主要内容
版本:Latest

Hello World 示例

本教程通过演示如何将应用推送到本地 Kubernetes 集群来介绍如何使用 Rancher Desktop。

Rancher Desktop 使用了两个容器引擎,分别是 containerdMoby,它们是 Docker 生态系统的开源组件。对于 nerdctl,使用 containerd 运行时。对于 docker,使用 dockerd(moby) 运行时。

示例 1 - 构建镜像并运行容器

创建文件夹

mkdir ../hello-world
cd ../hello-world

创建一个空白的 Dockerfile

在 Windows 上,创建一个名为 Dockerfile 的空白文件。

在 Linux 上,你可以使用以下命令创建一个空白的 Dockerfile:

vi Dockerfile

使用以下命令填充 Dockerfile

FROM alpine  
CMD ["echo", "Hello World!!"]

构建并运行镜像以进行验证

nerdctl build --tag helloworld:v1.0 .
nerdctl images | grep helloworld
nerdctl run --rm helloworld:v1.0
# 移除镜像
nerdctl rmi helloworld:v1.0

示例 2 - 构建镜像并将容器部署到 Kubernetes

根据需要将 Kubernetes Settings 面板中的 Container Runtime 切换为 dockerdcontainerd

创建一个文件夹并添加一个示例 index.html 文件,如下所示

mkdir ../nginx
cd ../nginx
echo "<h1>Hello World from NGINX!!</h1>" > index.html

创建一个空白的 Dockerfile

在 Windows 上,创建一个名为 Dockerfile 的空白文件。

在 Linux 上,你可以使用以下命令创建一个空白的 Dockerfile:

vi Dockerfile

使用以下命令填充 Dockerfile

FROM nginx:alpine
COPY . /usr/share/nginx/html

使用本地代码构建镜像

⚠️ 注意:你需要将 --namespace k8s.io 标志传递给 nerdctl build 命令,以便 nerdctl 构建镜像并使其在 k8s.io 命名空间中可用。

nerdctl --namespace k8s.io build --tag nginx-helloworld:latest .
nerdctl --namespace k8s.io images | grep nginx-helloworld

部署到 Kubernetes

运行以下命令,从而使用在上一步中构建的镜像创建和运行 pod。

⚠️ 注意:你需要传递 --image-pull-policy=Never 标志以使用带有 :latest 标签的本地镜像(:latest 标签将始终尝试从远程仓库中拉取镜像)。

kubectl run hello-world --image=nginx-helloworld:latest --image-pull-policy=Never --port=80
kubectl port-forward pods/hello-world 8080:80

在浏览器中访问 localhost:8080,你将看到 Hello World from NGINX!! 的信息。如果你想留在命令行上,请使用 curl localhost:8080

删除 pod 和镜像

kubectl delete pod hello-world
# 移除镜像
nerdctl --namespace k8s.io rmi nginx-helloworld:latest