前言:
运行时 runtime 分为高级别运行时和低级别运行时,遵循oci标准。
低级别运行时:runc、lxc、gvisor、kata......(单纯的管理容器,无法管理镜像)
高级别运行时:docker、containerd、podman、cri-o、rkt......(不仅可以管理容器也可以管理镜像)
setterm -blank 0 关闭屏保
一、安装和配置Docker
rm -rf /etc/yum.repos.d/* ; wget ftp://ftp.rhce.cc/k8s/* -P /etc/yum.repo
删除原有源,替换源。
安装Dokcer
yum -y install docker-ce
练习环境下使用如下命令进行安装
#yum -y install /root/soft/docker-rpm/*
#systemctl enable docker --now
镜像从何处来?
自己构建、拉取。拉取国外镜像很慢,所以需要配置加速器。
配置Docker加速器:
cat > /etc/docker/daemon.json <<EOF
{ "registry-mirrors": ["https://frz7i079.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
#配置完json文件后重启docker
此文件里只要不是最后一行,都要以逗号结束。 且最后一行,不需要逗号结束。
可使用 docker info 命令查看docker的系统级信息。
其中runtimes显示支持的低级别运行时
docker是命令名,docker是服务名,启动docker时会运行名为dockerd的进程。
二、安装containerd
删除原有源,替换源,安装containerd
rm -rf /etc/yum.repos.d/* ; wget ftp://ftp.rhce.cc/k8s/* -P /etc/yum.repos.d/
yum -y install containerd.io cri-tools
练习环境下使用如下命令进行安装:
#yum -y install /root/soft/containerd-rpm/*
crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
#连接到客户端
#安装crictl客户端工具
containerd config default > /etc/containerd/config.toml
#初始化Containerd配置
配置containerd:
第一:搜索mirrors,把
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
改成
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io
"]
endpoint = ["https://frz7i079.mirror.aliyuncs.com
"]
第二:搜索sandbox,把
sandbox_image = "k8s.gcr.io/pause:3.6"
改为
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.7"
第三:搜索SystemdCgroup,把
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
BinaryName = ""
CriuImagePath = ""
CriuPath = ""
CriuWorkPath = ""
IoGid = 0
IoUid = 0
NoNewKeyring = false
NoPivotRoot = false
Root = ""
ShimCgroup = ""
SystemdCgroup = false
改成
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
可使用crictl info 查看crictl信息
默认低级别运行时是runc
(2)安装nerdctl
在/root/soft/nerdctl下进行:
tar zxf nerdctl-0.23.0-linux-amd64.tar.gz -C /usr/bin/
mkdir -p /opt/cni/bin/
tar zxf cni-plugins-linux-amd64-v1.1.1.tgz -C /opt/cni/bin/
创建命名空间:
mkdir /etc/nerdctl
cat > /etc/nerdctl/nerdctl.toml <<EOF
debug = false
debug_full = false
address = "unix:///var/run/containerd/containerd.sock"
namespace = "default"
#snapshotter = "stargz"
cgroup_manager = "systemd"
#hosts_dir = ["/etc/containerd/certs.d","/etc/nerdctl/certs.d"]
insecure_registry = false
EOF
需单独给nerdctl配置加速器:
mkdir -p /etc/containerd/certs.d/docker.io
cat > /etc/containerd/certs.d/docker.io/hosts.toml <<EOF
# server = "https://docker.io
"
[host."https://frz7i079.mirror.aliyuncs.com
"]
capabilities = ["
pull"
,
"
resolve
"]
override_path = true
EOF
(3)containerd中的命名空间(namespace)
可在配置文件/etc/nerdctl/nerdctl.toml中更改
默认为default,修改nerdctl使用k8s.io这个命名空间,理解为 nerdctl也看k8s.io里的内容。