linux容器部署核心是选对运行时(如containerd+nerdctl或podman)、配好国内镜像源、跑稳首个容器,再用nerdctl compose实现轻量编排,全程无需docker Desktop或K8s。

Linux容器环境部署不难,关键在理清步骤、避开常见坑。核心是:选对运行时、配好镜像源、跑稳第一个容器、再逐步加管理能力。
一、确认系统基础和容器运行时
主流Linux发行版(如ubuntu 20.04+、centos 8+/AlmaLinux/Rocky Linux、debian 11+)基本都预装或轻松支持containerd或Podman。Docker虽常用,但已非唯一选择——尤其新项目推荐优先用containerd + nerdctl或Podman(无守护进程、rootless更安全)。
- 检查内核版本:
uname -r,确保 ≥ 4.18(推荐5.4+,支持cgroup v2和seccomp) - 确认cgroup v2启用:
mount | grep cgroup,看到cgroup2 on /sys/fs/cgroup type cgroup2即正常 - 关闭旧版cgroup v1干扰(可选):在grub中添加
systemd.unified_cgroup_hierarchy=1
二、安装轻量高效运行时(以containerd + nerdctl为例)
跳过Docker Desktop式臃肿方案,用原生云原生栈更可控、资源占用更低。
- Ubuntu/Debian:
sudo apt update && sudo apt install -y containerd.io(官方repo)或直接下载containerd二进制+nerdctl - 配置containerd:
sudo mkdir -p /etc/containerd && sudo containerd config default | sudo tee /etc/containerd/config.toml - 启用systemd cgroup驱动(编辑config.toml):
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]SystemdCgroup = true - 启动服务:
sudo systemctl enable --now containerd - 安装nerdctl(类docker CLI):
curl -LO https://github.com/containerd/nerdctl/releases/download/v1.7.6/nerdctl-1.7.6-linux-amd64.tar.gz && tar zxvf nerdctl-1.7.6-linux-amd64.tar.gz && sudo mv nerdctl /usr/local/bin/
三、加速镜像拉取与本地镜像管理
国内直连Docker Hub慢且不稳定,必须配置镜像加速器;同时建议搭建私有registry用于团队协作或离线环境。
- 为containerd配置镜像加速(修改
/etc/containerd/config.toml中plugins."io.containerd.grpc.v1.cri".registry段):[[plugins."io.containerd.grpc.v1.cri".registry.mirrors]]endpoint = ["https://mirror.gcr.io", "https://docker.mirrors.ustc.edu.cn"] - 重启生效:
sudo systemctl restart containerd - 测试拉取:
nerdctl pull nginx:alpine(比docker pull更快更省内存) - 本地存镜像:
nerdctl save -o nginx.tar nginx:alpine;加载:nerdctl load -i nginx.tar
四、从单容器到轻量编排(不用K8s也能管好)
小项目或CI/CD环境无需上kubernetes。nerdctl自带compose子命令(v1.5+),完全兼容Docker Compose v2语法。
- 写一个
docker-compose.yml(示例:Nginx + redis):services:web:image: nginx:alpineports: ["8080:80"]cache:image: redis:7-alpine - 启动:
nerdctl compose up -d;查看:nerdctl compose ps;日志:nerdctl compose logs -f - 进阶技巧:
– 加--rootless参数用普通用户运行(需提前配置loginctl enable-linger $USER)
– 用nerdctl build -f Dockerfile -t myapp .构建镜像(支持BuildKit)
– 配合systemd --user实现开机自启容器(适合边缘设备)
基本上就这些。从装运行时、配镜像源、跑单容器,到用Compose编排,整套流程干净、可复现、易维护。不需要Docker Desktop,也不必一上来就啃K8s。真正用起来,你会发现容器不是黑盒,而是你手边顺手的“超级chroot”。