使用镜像

Rancher Desktop 通过 NERDCTL 项目和 Docker CLI 来提供构建,推送和拉取镜像的功能。

请注意,nerdctldocker 都会自动放入路径中。在 Windows 上,这发生在安装程序期间,而在 macOS 和 Linux 上,这发生在首次运行的时候。

常规用法

使用任何一种工具都需要 Rancher Desktop 与适当的容器运行时一起运行。对于 nerdctl,使用 containerd 运行时。对于 docker,使用 Moby 运行时。

要了解所有命令选项并显示帮助文档,运行:

  • nerdctl
  • docker
  1. nerdctl -h

与 Docker 不同,containerd 具有自己的命名空间。默认情况下,nerdctl 镜像存储在 default 命名空间中。如果你希望你的镜像可供 Kubernetes 使用,请使用 --namespace k8s.io-n k8s.io CLI 参数。你还可以使用 --namespace <NAMESPACE_NAME> 选项来切换到 default 或其他命名空间。请注意,nerdctl 命名空间独立于 Kubernetes 和 kubectl 命名空间。

  1. docker --help

列出镜像

要查看当前可用的镜像,请运行以下命令:

  • nerdctl
  • docker
  1. nerdctl images
  1. docker images

构建镜像

  • nerdctl
  • docker

构建镜像与现有工具的操作相似。你可以在具有 DockerfileDockerfile 使用了一个 scratch 镜像)的路径上运行 nerdctl

  1. nerdctl build .
  2. [+] Building 0.1s (4/4) FINISHED
  3. => [internal] load build definition from Dockerfile
  4. => => transferring dockerfile: 31B
  5. => [internal] load .dockerignore
  6. => => transferring context: 2B
  7. => [internal] load build context
  8. => => transferring context: 33B
  9. => CACHED [1/1] ADD anvil-app /

nerdctl 具有在构建时进行标记的选项以及一些其他选项:

  1. nerdctl build -t TAG .

要构建用于 Kubernetes 的镜像,请指定 k8s.io 命名空间,如下所示:

  1. nerdctl build -n k8s.io .

你可以在具有 DockerfileDockerfile 使用了一个 scratch 镜像)的路径上运行 docker

  1. docker build .
  2. Sending build context to Docker daemon 13.93MB
  3. Step 1/5 : FROM some-repo/some-image
  4. ---> e57ace221dff
  5. ...
  6. ---> fd984c4cbf97
  7. Successfully built fd984c4cbf97

docker 具有在构建时进行标记的选项以及一些其他选项:

  1. docker build -t TAG .

构建本地镜像

为了演示构建本地镜像和运行应用程序的步骤,Rancher Desktop 的 docs 仓库提供了一个示例 nodejs 应用程序。首先,克隆仓库并 cd 到终端中的 assets/express-sample 中。

运行以下命令来使用 Dockerfile 构建镜像:

  • nerdctl
  • docker
  1. nerdctl --namespace k8s.io build -t expressapp:v1.0 .
  1. docker build -t expressapp:v1.0 .

运行以下命令来运行容器:

  1. kubectl run --image expressapp:v1.0 expressapp
  2. kubectl port-forward pods/expressapp 3000:3000

注意:添加 latest 标签时,请务必同时指定以下内容:

  1. imagePullPolicy: Never

标记镜像

如果要标记已构建的现有镜像,你可以运行以下命令:

  • nerdctl
  • docker
  1. nerdctl tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  1. docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

删除镜像

要删除镜像,请运行以下命令:

  • nerdctl
  • docker
  1. nerdctl rmi IMAGE
  1. docker rmi IMAGE