update
This commit is contained in:
13
k8s/README.md
Normal file
13
k8s/README.md
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
赋予脚本执行权限:
|
||||
```shell
|
||||
chmod +x install_script.sh
|
||||
```
|
||||
|
||||
执行:
|
||||
|
||||
```shell
|
||||
./install_script.sh
|
||||
```
|
||||
|
||||
通过这个脚本,你可以选择安装 Docker Compose、containerd、nerdctl、CNI 插件和 BuildKit,并配置它们以支持 GPU 和容器构建。该脚本还会自动从环境变量获取版本号,并将安装日志重定向到当前目录下的 install_log.txt 文件中。
|
||||
157
k8s/install_script.sh
Normal file
157
k8s/install_script.sh
Normal file
@@ -0,0 +1,157 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 获取版本号从环境变量
|
||||
CONTAINERD_VERSION=${CONTAINERD_VERSION:-1.6.8}
|
||||
NERDCTL_VERSION=${NERDCTL_VERSION:-1.7.6}
|
||||
CNI_VERSION=${CNI_VERSION:-1.1.1}
|
||||
BUILDKIT_VERSION=${BUILDKIT_VERSION:-0.14.1}
|
||||
|
||||
# Docker Compose 安装路径
|
||||
DOCKER_COMPOSE_PATH="/usr/local/bin/docker-compose"
|
||||
LOGFILE="$(pwd)/install_log.txt"
|
||||
|
||||
install_docker() {
|
||||
echo "正在检查 Docker 是否已安装..." | tee -a $LOGFILE
|
||||
if ! [ -x "$(command -v docker)" ]; then
|
||||
echo "Docker 未安装。正在安装 Docker..." | tee -a $LOGFILE
|
||||
curl -fsSL https://get.docker.com -o get-docker.sh | tee -a $LOGFILE
|
||||
sh get-docker.sh | tee -a $LOGFILE
|
||||
echo "Docker 已安装。" | tee -a $LOGFILE
|
||||
else
|
||||
echo "Docker 已安装。" | tee -a $LOGFILE
|
||||
fi
|
||||
}
|
||||
|
||||
install_docker_compose() {
|
||||
install_docker
|
||||
echo "正在安装 Docker Compose..." | tee -a $LOGFILE
|
||||
|
||||
# 检查并安装 jq
|
||||
if ! [ -x "$(command -v jq)" ]; then
|
||||
echo "安装 jq..." | tee -a $LOGFILE
|
||||
sudo apt-get update && sudo apt-get install -y jq | tee -a $LOGFILE
|
||||
fi
|
||||
|
||||
# 检查并安装 curl
|
||||
if ! [ -x "$(command -v curl)" ]; then
|
||||
echo "安装 curl..." | tee -a $LOGFILE
|
||||
sudo apt-get update && sudo apt-get install -y curl | tee -a $LOGFILE
|
||||
fi
|
||||
|
||||
# 使用 GitHub API 获取最新版本
|
||||
LATEST_RELEASE=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r .tag_name)
|
||||
if [ -z "$LATEST_RELEASE" ]; then
|
||||
echo "无法获取 Docker Compose 的最新版本。" | tee -a $LOGFILE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 更新 Docker Compose 安装 URL 以使用最新版本
|
||||
DOCKER_COMPOSE_URL="https://github.com/docker/compose/releases/download/${LATEST_RELEASE}/docker-compose-$(uname -s)-$(uname -m)"
|
||||
|
||||
sudo curl -L $DOCKER_COMPOSE_URL -o $DOCKER_COMPOSE_PATH | tee -a $LOGFILE
|
||||
sudo chmod +x $DOCKER_COMPOSE_PATH | tee -a $LOGFILE
|
||||
echo "Docker Compose ${LATEST_RELEASE} 已安装。" | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
uninstall_docker_compose() {
|
||||
echo "正在卸载 Docker Compose..." | tee -a $LOGFILE
|
||||
sudo rm -f $DOCKER_COMPOSE_PATH | tee -a $LOGFILE
|
||||
echo "Docker Compose 已卸载。" | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
install_containerd() {
|
||||
echo "正在安装 containerd..." | tee -a $LOGFILE
|
||||
sudo apt-get update | tee -a $LOGFILE
|
||||
sudo apt-get install -y containerd | tee -a $LOGFILE
|
||||
sudo mkdir -p /etc/containerd
|
||||
containerd config default | sudo tee /etc/containerd/config.toml | tee -a $LOGFILE
|
||||
sudo systemctl restart containerd | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
configure_containerd() {
|
||||
echo "正在配置 containerd 使用 nvidia-container-runtime..." | tee -a $LOGFILE
|
||||
sudo tee -a /etc/containerd/config.toml > /dev/null <<EOT
|
||||
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
|
||||
runtime_type = "io.containerd.runc.v2"
|
||||
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
|
||||
BinaryName = "/usr/bin/nvidia-container-runtime"
|
||||
EOT
|
||||
sudo systemctl restart containerd | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
install_nerdctl() {
|
||||
echo "正在安装 nerdctl..." | tee -a $LOGFILE
|
||||
curl -LO https://github.com/containerd/nerdctl/releases/download/v${NERDCTL_VERSION}/nerdctl-${NERDCTL_VERSION}-linux-amd64.tar.gz | tee -a $LOGFILE
|
||||
sudo tar xzvf nerdctl-${NERDCTL_VERSION}-linux-amd64.tar.gz -C /usr/local/bin | tee -a $LOGFILE
|
||||
nerdctl version | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
install_cni_plugins() {
|
||||
echo "正在安装 CNI 插件..." | tee -a $LOGFILE
|
||||
mkdir -p /opt/cni/bin
|
||||
curl -L "https://github.com/containernetworking/plugins/releases/download/v${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz" | sudo tar -xz -C /opt/cni/bin | tee -a $LOGFILE
|
||||
ls /opt/cni/bin | tee -a $LOGFILE
|
||||
nerdctl network ls | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
install_buildkit() {
|
||||
echo "正在安装 BuildKit..." | tee -a $LOGFILE
|
||||
curl -LO https://github.com/moby/buildkit/releases/download/v${BUILDKIT_VERSION}/buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz | tee -a $LOGFILE
|
||||
sudo tar -C /usr/local/bin --strip-components=1 -xzf buildkit-${BUILDKIT_VERSION}.linux-amd64.tar.gz | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
configure_buildkit_service() {
|
||||
echo "正在配置 BuildKit 守护进程..." | tee -a $LOGFILE
|
||||
sudo tee /etc/systemd/system/buildkitd.service > /dev/null <<EOT
|
||||
[Unit]
|
||||
Description=BuildKit Daemon
|
||||
Documentation=https://github.com/moby/buildkit
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/buildkitd
|
||||
Restart=always
|
||||
RestartSec=10s
|
||||
StartLimitInterval=0
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOT
|
||||
sudo systemctl daemon-reload | tee -a $LOGFILE
|
||||
sudo systemctl start buildkitd | tee -a $LOGFILE
|
||||
sudo systemctl enable buildkitd | tee -a $LOGFILE
|
||||
sudo systemctl status buildkitd | tee -a $LOGFILE
|
||||
}
|
||||
|
||||
install_all() {
|
||||
install_docker_compose
|
||||
install_containerd
|
||||
configure_containerd
|
||||
install_nerdctl
|
||||
install_cni_plugins
|
||||
install_buildkit
|
||||
configure_buildkit_service
|
||||
}
|
||||
|
||||
echo "选择操作:" | tee -a $LOGFILE
|
||||
echo "1) 安装 Docker Compose" | tee -a $LOGFILE
|
||||
echo "2) 卸载 Docker Compose" | tee -a $LOGFILE
|
||||
echo "3) 安装并配置 containerd" | tee -a $LOGFILE
|
||||
echo "4) 安装 nerdctl" | tee -a $LOGFILE
|
||||
echo "5) 安装 CNI 插件" | tee -a $LOGFILE
|
||||
echo "6) 安装 BuildKit 并配置守护进程" | tee -a $LOGFILE
|
||||
echo "7) 全部安装" | tee -a $LOGFILE
|
||||
echo "8) 退出" | tee -a $LOGFILE
|
||||
read -p "输入选择(1-8):" choice
|
||||
|
||||
case $choice in
|
||||
1) install_docker_compose ;;
|
||||
2) uninstall_docker_compose ;;
|
||||
3) install_containerd; configure_containerd ;;
|
||||
4) install_nerdctl ;;
|
||||
5) install_cni_plugins ;;
|
||||
6) install_buildkit; configure_buildkit_service ;;
|
||||
7) install_all ;;
|
||||
8) exit 0 ;;
|
||||
*) echo "无效输入。" | tee -a $LOGFILE ;;
|
||||
esac
|
||||
32
k8s/reinstall_docker.sh
Normal file
32
k8s/reinstall_docker.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Step 1: 卸载旧版本
|
||||
sudo apt-get remove -y docker docker-engine docker.io containerd runc
|
||||
|
||||
# Step 2: 更新apt包索引
|
||||
sudo apt-get update
|
||||
|
||||
# Step 3: 安装必要的包
|
||||
sudo apt-get install -y \
|
||||
apt-transport-https \
|
||||
ca-certificates \
|
||||
curl \
|
||||
gnupg \
|
||||
lsb-release
|
||||
|
||||
# Step 4: 添加Docker的官方GPG密钥
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||
|
||||
# Step 5: 设置稳定的存储库
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
|
||||
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
# Step 6: 更新apt包索引并安装Docker Engine
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
|
||||
|
||||
# Step 7: 验证Docker安装
|
||||
sudo docker run hello-world
|
||||
|
||||
echo "Docker and Docker Compose have been successfully reinstalled."
|
||||
Reference in New Issue
Block a user