1. 引言
在容器技术体系中,Docker 和 Containerd 是两种常见的容器运行时。Docker 提供了从构建、推送到运行的一站式体验,而 Containerd 作为更底层的容器运行时,被 Kubernetes 等编排平台广泛采用。本文整理了两者最常用的命令,帮助你在日常开发与运维中快速上手。
2. Docker 容器常用命令
Docker 命令围绕镜像、容器、网络和数据卷展开,以下是最常用的操作。
2.1 镜像管理
bash
# 拉取镜像
docker pull nginx:latest
查看本地镜像
docker images
删除镜像
docker rmi nginx:latest
构建镜像
docker build -t myapp:v1 .
2.2 容器生命周期
bash
# 运行容器(前台)
docker run nginx
运行容器(后台)
docker run -d --name web -p 8080:80 nginx
查看运行中的容器
docker ps
查看所有容器(含已停止)
docker ps -a
停止容器
docker stop web
启动已停止的容器
docker start web
重启容器
docker restart web
删除容器
docker rm web
强制删除运行中的容器
docker rm -f web
2.3 进入容器与日志
bash
# 进入容器交互终端
docker exec -it web /bin/bash
查看容器日志
docker logs web
实时跟踪日志
docker logs -f web
查看容器资源占用
docker stats
2.4 数据卷与网络
bash
# 创建数据卷
docker volume create mydata
挂载数据卷运行容器
docker run -d -v mydata:/data nginx
查看网络列表
docker network ls
创建自定义网络
docker network create mynet
指定网络运行容器
docker run -d --network mynet nginx
3. Containerd 容器常用命令
Containerd 的命令行工具是 ctr,它更贴近底层,不包含镜像构建和 Dockerfile 等上层能力,主要面向镜像拉取、容器运行和命名空间管理。
3.1 命名空间管理
bash
# 查看命名空间
ctr namespace ls
创建命名空间
ctr namespace create k8s.io
删除命名空间
ctr namespace rm k8s.io
3.2 镜像管理
bash
# 拉取镜像(需指定命名空间)
ctr -n k8s.io image pull docker.io/library/nginx:latest
查看本地镜像
ctr -n k8s.io image ls
删除镜像
ctr -n k8s.io image rm docker.io/library/nginx:latest
导入镜像
ctr -n k8s.io image import nginx.tar
导出镜像
ctr -n k8s.io image export nginx.tar docker.io/library/nginx:latest
3.3 容器生命周期
bash
# 运行容器(前台)
ctr -n k8s.io run docker.io/library/nginx:latest web
运行容器(后台)
ctr -n k8s.io run -d docker.io/library/nginx:latest web
查看容器列表
ctr -n k8s.io container ls
查看容器详细信息
ctr -n k8s.io container info web
删除容器
ctr -n k8s.io container rm web
3.4 任务(进程)管理
bash
# 查看容器中的任务(进程)
ctr -n k8s.io task ls
启动任务
ctr -n k8s.io task start web
暂停任务
ctr -n k8s.io task pause web
恢复任务
ctr -n k8s.io task resume web
停止任务
ctr -n k8s.io task kill web
删除任务
ctr -n k8s.io task rm web
4. Kata 容器常用命令
Kata Containers 是一种基于轻量级虚拟机的容器运行时,它结合了容器的快速启动与虚拟机的安全隔离。Kata 通常通过 kata-runtime 与容器编排平台集成,也可以使用 kata-runtime 命令直接管理容器。
4.1 运行时信息
bash
# 查看 Kata 运行时版本
kata-runtime --version
查看 Kata 运行时配置
kata-runtime kata-env
查看支持的虚拟机类型
kata-runtime kata-check
4.2 容器生命周期
bash
# 创建容器(不启动)
kata-runtime create --bundle /path/to/bundle test-container
启动容器
kata-runtime start test-container
查看容器状态
kata-runtime state test-container
删除容器
kata-runtime delete test-container
强制删除容器
kata-runtime delete --force test-container
4.3 与 Docker 集成
bash
# 指定 Kata 运行时运行容器
docker run --runtime=kata-runtime -d --name kata-web nginx
查看容器使用的运行时
docker inspect kata-web | grep -i runtime
查看 Kata 虚拟机进程
ps aux | grep qemu
5. Docker、Containerd 与 Kata 命令对比
| 操作 | Docker | Containerd(ctr) | Kata(kata-runtime) |
|---|---|---|---|
| 拉取镜像 | docker pull nginx | ctr -n k8s.io image pull docker.io/library/nginx:latest | 由上层 Docker/Containerd 管理 |
| 查看镜像 | docker images | ctr -n k8s.io image ls | 由上层 Docker/Containerd 管理 |
| 运行容器 | docker run -d nginx | ctr -n k8s.io run -d docker.io/library/nginx:latest web | docker run --runtime=kata-runtime -d nginx |
| 查看容器 | docker ps | ctr -n k8s.io container ls | kata-runtime list |
| 进入容器 | docker exec -it web /bin/bash | ctr -n k8s.io task exec --exec-id 1 -t web /bin/bash | docker exec -it web /bin/bash |
| 查看日志 | docker logs web | ctr -n k8s.io task logs web | docker logs web |
| 停止容器 | docker stop web | ctr -n k8s.io task kill web | docker stop web |
| 删除容器 | docker rm web | ctr -n k8s.io container rm web | kata-runtime delete web |
6. 总结
Docker 命令更贴近开发者日常使用,功能完整、上手简单;Containerd 的 ctr 命令更底层,通常需要显式指定命名空间,适合在 Kubernetes 节点或需要精细控制容器生命周期的场景中使用;Kata Containers 则通过轻量级虚拟机提供更强的安全隔离,适合多租户或高安全要求的场景。掌握三者的核心命令,可以更灵活地应对不同的容器运行环境。
nitial; -webkit-box-decoration-break:initial; -webkit-box-direction:initial; -webkit-box-flex:initial; -webkit-box-ordinal-group:initial; -webkit-box-orient:initial; -webkit-box-pack:initial; -webkit-box-reflect:initial; -webkit-font-smoothing:initial; -webkit-line-break:initial; -webkit-line-clamp:initial; -webkit-locale:initial; -webkit-mask-box-image:initial; -webkit-rtl-ordering:initial; -webkit-ruby-position:initial; -webkit-tap-highlight-color:initial; -webkit-text-combine:initial; -webkit-text-decorations-in-effect:initial; -webkit-text-fill-color:initial; -webkit-text-orientation:initial; -webkit-text-security:initial; -webkit-text-stroke:initial; -webkit-user-drag:initial; -webkit-writing-mode:initial; accent-color:initial; alignment-baseline:initial; anchor-name:initial; anchor-scope:initial; animation-composition:initial; animation-trigger:initial; animation:initial; app-region:initial; appearance:initial; aspect-ratio:initial; backdrop-filter:initial; backface-visibility:initial; background-blend-mode:initial; background:initial; baseline-shift:initial; baseline-source:initial; block-size:initial; border-block:initial; border-collapse:initial; border-end-end-radius:initial; border-end-start-radius:initial; border-inline:initial; border-radius:initial; border-shape:initial; border-spacing:initial; border-start-end-radius:initial; border-start-start-radius:initial; border:initial; bottom:0px !important; box-decoration-break:initial; box-shadow:initial; box-sizing:border-box; break-after:initial; break-before:initial; break-inside:initial; buffered-rendering:initial; caption-side:initial; caret-animation:initial; caret-color:initial; caret-shape:initial; clear:initial; clip-path:initial; clip-rule:initial; clip:initial; color-interpolation-filters:initial; color-interpolation:initial; color-rendering:initial; color-scheme:initial; color:initial; column-fill:initial; column-span:initial; columns:initial; contain-intrinsic-block-size:initial; contain-intrinsic-inline-size:initial; contain-intrinsic-size:initial; contain:initial; container:initial; content-visibility:initial; content:initial; corner-block-end-shape:initial; corner-block-start-shape:initial; corner-shape:initial; counter-increment:initial; counter-reset:initial; counter-set:initial; cursor:initial; cx:initial; cy:initial; d:initial; display:flex !important; dominant-baseline:initial; dynamic-range-limit:initial; empty-cells:initial; field-sizing:initial; fill-opacity:initial; fill-rule:initial; fill:initial; filter:initial; flex-direction:column !important; flex-line-count:initial; flex-wrap:initial; flex:initial; float:initial; flood-color:initial; flood-opacity:initial; font-palette:initial; font-synthesis:initial; font:initial; forced-color-adjust:initial; gap:initial; grid-area:initial; grid:initial; height:initial; hyphenate-character:initial; hyphenate-limit-chars:initial; hyphens:initial; image-orientation:initial; image-rendering:initial; initial-letter:initial; inline-size:initial; inset-block:initial; inset-inline:initial; interactivity:initial; interest-delay:initial; interpolate-size:initial; isolation:initial; left:initial; letter-spacing:initial; lighting-color:initial; line-break:initial; list-style:initial; margin-block:initial; margin-bottom:0px; margin-inline:initial; margin-left:0px; margin-right:0px; margin-top:0px; marker:initial; mask-type:initial; mask:initial; math-depth:initial; math-shift:initial; math-style:initial; max-block-size:initial; max-height:100% !important; max-inline-size:initial; max-width:initial; min-block-size:initial; min-height:initial; min-inline-size:initial; min-width:initial; mix-blend-mode:initial; object-fit:initial; object-position:initial; object-view-box:initial; offset:initial; opacity:initial; order:initial; orphans:initial; outline-offset:initial; outline:initial; overflow-anchor:initial; overflow-block:initial; overflow-clip-margin:initial; overflow-inline:initial; overflow-wrap:initial; overflow:hidden; overlay:initial; overscroll-behavior-block:initial; overscroll-behavior-inline:initial; overscroll-behavior:initial; padding-block:initial; padding-inline:initial; padding:initial; page-margin-safety:initial; page-orientation:initial; page:initial; paint-order:initial; perspective-origin:initial; perspective:initial; place-content:initial; place-items:initial; place-self:initial; pointer-events:none !important; position-anchor:initial; position-area:initial; position-try:initial; position-visibility:initial; position:fixed !important; print-color-adjust:initial; quotes:initial; r:initial; reading-flow:initial; reading-order:initial; resize:initial; right:0px !important; rotate:initial; ruby-align:initial; ruby-overhang:initial; ruby-position:initial; rule-break:initial; rule-inset:initial; rule-overlap:initial; rule-visibility-items:initial; rule:initial; rx:initial; ry:initial; scale:initial; scroll-behavior:initial; scroll-initial-target:initial; scroll-margin-block:initial; scroll-margin-inline:initial; scroll-margin:initial; scroll-marker-group:initial; scroll-padding-block:initial; scroll-padding-inline:initial; scroll-padding:initial; scroll-snap-align:initial; scroll-snap-stop:initial; scroll-snap-type:initial; scroll-target-group:initial; scroll-timeline:initial; scrollbar-color:initial; scrollbar-gutter:initial; scrollbar-width:initial; shape-image-threshold:initial; shape-margin:initial; shape-outside:initial; shape-rendering:initial; size:initial; speak:initial; stop-color:initial; stop-opacity:initial; stroke-dasharray:initial; stroke-dashoffset:initial; stroke-linecap:initial; stroke-linejoin:initial; stroke-miterlimit:initial; stroke-opacity:initial; stroke-width:initial; stroke:initial; tab-size:initial; table-layout:initial; text-align-last:initial; text-align:initial; text-anchor:initial; text-autospace:initial; text-box:initial; text-combine-upright:initial; text-decoration-skip-ink:initial; text-decoration:initial; text-emphasis-position:initial; text-emphasis:initial; text-fit:initial; text-indent:initial; text-justify:initial; text-orientation:initial; text-overflow:initial; text-rendering:initial; text-shadow:initial; text-size-adjust:initial; text-spacing-trim:initial; text-transform:initial; text-underline-offset:initial; text-underline-position:initial; text-wrap:initial; timeline-scope:initial; timeline-trigger:initial; top:0px !important; touch-action:initial; transform-box:initial; transform-origin:initial; transform-style:initial; transform:initial; transition:initial; translate:initial; trigger-scope:initial; user-select:initial; vector-effect:initial; vertical-align:initial; view-timeline:initial; view-transition-class:initial; view-transition-group:initial; view-transition-name:initial; view-transition-scope:initial; visibility:initial; white-space-collapse:initial; widows:initial; width:initial; will-change:initial; window-drag:initial; word-break:initial; word-spacing:initial; writing-mode:initial; x:initial; y:initial; z-index:2000000000 !important; zoom:initial">