摘要:本文采用源文件安装方式,适用于离线方式安装;简单介绍了nerdctl 的基本使用,拥有docker、docker-compose技能能更快速掌握。
安装
分步安装
Step 1 安装 containerd
下载文件并解压
# 下载
wget https://github.com/containerd/containerd/releases/download/v1.7.22/containerd-1.7.22-linux-amd64.tar.gz
# 解压
tar Cxzvf /usr/local containerd-1.7.22-linux-amd64.tar.gz
注册为系统服务
mkdir -p /usr/local/lib/systemd/system
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -O /usr/local/lib/systemd/system/containerd.service
# 自启动
systemctl daemon-reload
systemctl enable --now containerd
Step 2 安装runc开源的容器执行工具
# 下载
wget https://github.com/opencontainers/runc/releases/download/v1.1.14/runc.amd64
# 安装
install -m 755 runc.amd64 /usr/local/sbin/runc
Step 3 安装CNI网络插件
# 下载
wget https://github.com/containernetworking/plugins/releases/download/v1.5.1/cni-plugins-linux-amd64-v1.5.1.tgz
# 解压
mkdir -p /opt/cni/bin
tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.5.1.tgz
nerdctl客户端工具安装
该工具和
docker的命令类似
# 下载
wget https://github.com/containerd/nerdctl/releases/download/v2.0.0-rc.1/nerdctl-2.0.0-rc.1-linux-amd64.tar.gz
# 安装
tar Cxzvvf /usr/local/bin nerdctl-2.0.0-rc.1-linux-amd64.tar.gz
一键安装
# 下载
wget https://github.com/containerd/nerdctl/releases/download/v2.0.0-rc.1/nerdctl-full-2.0.0-rc.1-linux-amd64.tar.gz
#解压
tar Cxzvvf /usr/local nerdctl-full-2.0.0-rc.1-linux-amd64.tar.gz
# 运行
sudo systemctl enable --now containerd
- 如果不想用
nerdctl想用docker
curl -sSL https://get.docker.com | sh
containerd镜像加速地址配置
推荐使用这个加速,比较稳定
https://github.com/DaoCloud/public-image-mirror
-
官方配置文档:github.com/containerd/…
-
如果默认配置不存在,生成默认配置
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
配置docker.io默认镜像加速地址
mkdir -p /etc/containerd/certs.d
mkdir -p /etc/containerd/certs.d/docker.io
- 编辑
/etc/containerd/certs.d/docker.io/hosts.toml
server = "https://docker.io"
[host."https://docker.m.daocloud.io"]
capabilities = ["pull", "resolve"]
[host."https://registry.docker-cn.com"]
capabilities = ["pull", "resolve"]
测试
nerdctl命令行和docker的基本上一样的
nerdctl run -d --name nginx -p 8080:80 nginx:alpine
nerdctl使用教程
我感觉和
docker使用差不多,只不过这里多了命名空间的区分,大家可以在不同的空间中部署服务namespace;默认不指定namespace则在default命名空间下
简单使用
- 创建命名空间:
nerdctl namespace create huzhihui - 查看命名空间:
nerdctl namespace ls - 指定命名空间查看运行的容器:
nerdctl -n 命名空间 ps - 后台运行容器并制定容器名称和绑定端口:
nerdctl run -d --name nginx -p 8080:80 nginx:alpine
-d:指定后台运行;--name nginx:指定容器名称;-p 8080:80:绑定宿主机的8080端口到容器的80端口
- 停止容器:
nerdctl stop nginx - 删除容器:
nerdctl rm nginx - 查看日志:
nerdctl logs -f --tail=100 nginx
nerdctl compose使用
- 使用
docker-compose文件也和docker-compose的原生命令一致,只不过变为了nerdctl compose up -d;docker-compose->nerdctl compose - 文档地址:github.com/containerd/…
docker-compose.yml
version: '3'
services:
nginx:
image: 'nginx:alpine'
container_name: nginx
environment:
- TZ=Asia/Shanghai
ports:
- '8080:80'
- 运行
nerdctl -n huzhihui compose -f docker-compose.yml up -d