Docker 替换到 Containerd (nerdctl相关指令)

news/2025/2/23 3:13:22/

因为docker不给用了,所以使用Containerd来代替

前置准备

安装 Containerd


# 安装 containerd
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y containerd.io
# 生成默认配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml# 启动 containerd
systemctl start containerd
systemctl enable containerd

迁移步骤

1. 备份数据

# 创建备份目录
mkdir -p /backup/docker# 导出所有 Docker 镜像
for image in $(docker images --format "{{.Repository}}:{{.Tag}}"); dodocker save $image > "/backup/docker/${image//\//_}.tar"
done# 导出容器数据卷
docker run --rm --volumes-from <container_name> -v /backup/docker:/backup busybox tar cvf /backup/data.tar /data

2. 导入镜像到 Containerd

# 安装 nerdctl (Containerd 的命令行工具)
wget https://github.com/containerd/nerdctl/releases/download/v0.22.2/nerdctl-0.22.2-linux-amd64.tar.gz
tar xvf nerdctl-0.22.2-linux-amd64.tar.gz
mv nerdctl /usr/local/bin/# 导入镜像
for tar in /backup/docker/*.tar; doctr images import $tar
done

3. 运行容器配置

  1. 获取 Docker 容器配置:
# 导出容器配置
docker inspect <container_name> > container_config.json
  1. 创建对应的 Containerd 容器
# 使用 nerdctl 创建容器,运行容器时只需要把平时用的docker run 换成nerdctl run就可以,参数和使用docker run基本一致
nerdctl run \--name <new_container_name> \--volume /path/to/data:/container/path \--network <network_name> \--env-file <env_file> \<image_name>

5. 验证

# 检查容器状态
nerdctl ps -a# 检查服务可用性
curl http://localhost:<port># 检查日志
nerdctl logs <container_name>

基础命令

1. 容器管理

# 运行容器
nerdctl run [选项] 镜像名 [命令]
# 示例:运行 Nginx
nerdctl run -d --name mynginx -p 80:80 nginx# 常用运行选项:
-d, --detach          # 后台运行
-p, --publish         # 端口映射
-v, --volume          # 挂载数据卷
--name                # 指定容器
--rm                  # 容器停止后自动删除
-e, --env            # 设置环境变量
--network            # 指定网络

2. 容器操作

# 查看运行中的容器
nerdctl ps
# 查看所有容器(包括已停止的)
nerdctl ps -a# 启动/停止/重启容器
nerdctl start 容器名或ID
nerdctl stop 容器名或ID
nerdctl restart 容器名或ID# 删除容器
nerdctl rm 容器名或ID
# 强制删除运行中的容器
nerdctl rm -f 容器名或ID# 查看容器日志
nerdctl logs 容器名或ID
# 实时查看日志
nerdctl logs -f 容器名或ID# 进入容器
nerdctl exec -it 容器名或ID /bin/bash

3. 镜像管理

# 查看本地镜像
nerdctl images# 拉取镜像
nerdctl pull 镜像名:标签# 推送镜像到仓库
nerdctl push 镜像名:标签# 删除镜像
nerdctl rmi 镜像名:标签# 构建镜像
nerdctl build -t 镜像名:标签 .# 保存和加载镜像
nerdctl save 镜像名:标签 > image.tar
nerdctl load < image.tar

高级功能

1. 网络管理

# 查看网络列表
nerdctl network ls# 创建网络
nerdctl network create 网络名
# 示例:创建自定义网络
nerdctl network create mynetwork# 删除网络
nerdctl network rm 网络名# 连接容器到网络
nerdctl network connect 网络名 容器# 断开容器与网络的连接
nerdctl network disconnect 网络名 容器

2. 数据卷管理

# 查看数据卷
nerdctl volume ls# 创建数据卷
nerdctl volume create 卷名# 删除数据卷
nerdctl volume rm 卷名# 查看数据卷详情
nerdctl volume inspect 卷名

3. 容器资源限制

# 限制内存使用
nerdctl run -m 512m 镜像名# 限制 CPU 使用
nerdctl run --cpus 2 镜像名# 限制 CPU 份额
nerdctl run --cpu-shares 512 镜像名

4. 容器编排

# 使用 compose 启动服务
nerdctl compose up -d# 停止 compose 服务
nerdctl compose down# 查看 compose 服务状态
nerdctl compose ps

实用技巧

1. 容器监控

# 查看容器资源使用情况
nerdctl stats# 查看容器详细信息
nerdctl inspect 容器名或ID

2. 镜像管理技巧

# 清理未使用的镜像
nerdctl image prune# 清理所有未使用的资源
nerdctl system prune# 查看镜像历史
nerdctl history 镜像名:标签

3. 文件传输

# 从容器复制文件到主机
nerdctl cp 容器名:/容器内路径 主机路径# 从主机复制文件到容器
nerdctl cp 主机文件路径 容器名:/容器内路径

常见问题解决

  1. 容器无法访问网络:
# 检查网络配置
nerdctl inspect 容器| grep -i network
  1. 容器启动失败:
# 查看详细错误信息
nerdctl events
nerdctl logs 容器
  1. 存储空间问题:
# 清理未使用的数据
nerdctl system prune -a --volumes

最佳实践

  1. 使用 --rm 参数运行临时容器
  2. 总是给容器命名,便于管理
  3. 使用数据卷而不是绑定挂载
  4. 定期清理未使用的资源
  5. 使用 compose 文件管理多容器应用

http://www.ppmy.cn/news/1574317.html

相关文章

Docker-技术架构演进之路

目录 一、概述 常见概念 二、架构演进 1.单机架构 2.应用数据分离架构 3.应用服务集群架构 4.读写分离 / 主从分离架构 5.引入缓存 —— 冷热分离架构 6.垂直分库 7.业务拆分 —— 微服务 8.容器化引入——容器编排架构 三、尾声 一、概述 在进行技术学习过程中&am…

基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

游戏开发微信小程序--工具箱之父

小程序工具箱之父已更新 Page({data: {score: 0,lives: 3,gameOver: false,playerVisible: true,level: 1,petType: cat,speedBuff: 1,coins: 0,friends: [],achievements: [],currentPetFrame: 0, // 当前宠物动画帧scoreMultiplier: 1, // 得分倍率gameSpeed: 1, // …

趣丸多云架构的演进与实践:从单云到多云2.0的旅程

随着数字化转型的加速&#xff0c;云计算已经成为企业IT架构的核心组成部分。在这个过程中&#xff0c;趣丸科技凭借其前瞻性的战略眼光和技术实力&#xff0c;成功实现了从单云架构到多云2.0的演进。本文将深入探讨这一旅程中的关键步骤、所面临的挑战以及趣丸科技的解决方案。…

计算机视觉基础|卷积神经网络:从数学原理到可视化实战

一、引言 在当今人工智能飞速发展的时代&#xff0c;卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称 CNN&#xff09;无疑在诸多领域发挥着关键作用&#xff0c;尤其在计算机视觉领域&#xff0c;如人脸识别、图像分类、目标检测等任务中&#xff0c;…

Java 大视界 -- 国际竞争与合作:Java 大数据在全球市场的机遇与挑战(94)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

我的电脑是 3070ti 能用那个级别的deepseek

你的电脑配备了 NVIDIA 3070 Ti,这是一款性能较强的消费级显卡,拥有 8GB 显存。虽然它的性能无法与专业级 GPU(如 A100 或 H100)相比,但仍然可以用于运行和微调一些中小规模的深度学习模型,包括 DeepSeek 的相关任务。 以下是基于你的硬件配置,可以运行的 DeepSeek 模型…

在线办公小程序(springboot论文源码调试讲解)

第三章 系统分析与设计 3.1系统说明 在线办公小程序是一个中小型的网上管理平台&#xff0c;人们可以在网络上进行信息交流&#xff0c;不用出门就可以查看到自己想要的办公信息。管理员可以通过对在线办公信息的管理、用户资料的管理等来对系统进行日常的更新与维护。 3.2系统…