背景

需要操作一批次服务器安装Docker

功能特色

  • 一键执行
bash <(curl -s -L http://server.com/installDocker.sh) MemberNode
  • 参数传递hostname修改
if [ ! -n "$1" ] ; then
echo "no hostname given!"
exit
fi
# modify hostname
sudo sed -i "1c 127.0.0.1\tlocalhost\t$1" /etc/hosts
cat << EOF > /etc/hostname
$1
EOF
hostname $1
  • NvidiaDocker安装
#sudo adduser node sudo >&/dev/null
sudo apt install selinux-utils
setenforce 0
sudo ufw disable # install docker
sudo swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-get install docker-ce=18.06.3~ce~3-0~ubuntu
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get -y update
sudo apt-get -y install docker-ce
sudo systemctl enable docker # make docker use GPU
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
sudo curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd cat << EOF > /etc/docker/daemon.json
{
"default-runtime": "nvidia",
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# change docker daemon
sudo systemctl restart docker
  • K8s安装
# install k8s
sudo apt-get update && sudo apt-get install -y apt-transport-https
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - cat << EOF > /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update && apt-get install -y kubelet=1.18.1-00 kubeadm=1.18.1-00 kubectl=1.18.1-00 kubeadm join [HOST]:6443 --token TOKEN --discovery-token-ca-cert-hash sha256:TOKEN sudo pkill -SIGHUP dockerd | sudo systemctl enable kubelet && systemctl start kubelet
  • 远程镜像文件下载
mkdir working
sudo apt-get install sshpass
sshpass -p '123456' scp -o StrictHostKeyChecking=no root@192.168.0.1:/home/node1/working/IMAGE.tar /root/working/
  • 导入镜像文件
docker load -i working/IMAGE.tar
  • 脚本自删除
rm -rf installDocker.sh
  • 完成后关机
sudo halt -p

Linux Shell开发功能点的更多相关文章

  1. shell实现linux回收站的功能

    shell实现linux回收站的功能 下载: https://gitee.com/LoongWang/shellrecycling/repository/archive/master.zip 代码: ...

  2. Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比

    Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...

  3. 嵌入式设备上的 Linux 系统开发

    转载:http://www.ibm.com/developerworks/cn/linux/embed/embdev/index.html   如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bo ...

  4. Linux驱动开发学习的一些必要步骤

      1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...

  5. DPDK2.1 linux上开发入门手册

    1引言 本文档主要包含INTEL DPDK安装和配置说明.目的是让用户快速的开发和运行程序.文档描述了如何在不深入细节的情况下在linux应用开发环境上编译和运行一个DPDK应用程序. 1.1文档总览 ...

  6. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  7. 与一线Linux嵌入式开发project师的对话

    转:与一线Linux嵌入式开发project师的对话 陈project师一直做Linux的嵌入式开发.作为在开发一线的project师.他对非常多问题的看法可能更切合实际需求,于是,通过邮件.就嵌入式 ...

  8. linux ——shell 脚本

                                                      linux—shell 脚本  精简基础                 2018/10/30 13 ...

  9. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  10. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

随机推荐

  1. PostgreSQL维护年龄的处理

    1.错误信息 WARNING: database "postgres" must be vacuumed within 3330803 transactions 最常见的方法是通过 ...

  2. Java第三讲动手动脑

    1 以上代码无法通过编译主要是由于在Foo类中自定义了有参的构造函数,系统不在提供默认的构造函数(无参),而在上述的引用中并没有提供参数导致无法通过编译. 2. 运行结果 由运行结果分析可知,在运行时 ...

  3. 花10几元买ESP32-C3,体验一下MicroPython (和CircuitPython)

    ESP32是近年很火的国产低成本MCU系列. 买了芯片ESP32-C3的模组安信可 ESP-C3-32S的开发板安信可 NodeMCU ESP-C3-32S-Kit .开发板很小,没有任何多余的东西, ...

  4. Python (进阶 第二部)

    目录 函数 闭包 匿名函数 迭代器 高阶函数 推导式 递归函数 函数 函数的定义:  功能( 包括一部分代码,实现某种功能,达成某个目的) 函数的特点:  函数可以反复调用 ,提高代码的复用性,提高开 ...

  5. mysql-8版本优化建议

    mysql-8版本优化 参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/

  6. switch-声明和类型模式匹配

    1.声明和类型模式:类型为 T 的声明模式在表达式结果为非 NULL 且满足以下任一条件时与表达式匹配 var numbers = new int[] { 10, 20, 30 }; Console. ...

  7. 微信小程序JS

    微信小程序之操作三元运算符class <view class="chejian wx:if='{{item.is_check == 1 ? 'hover' : ''}}' " ...

  8. Vue项目中怎样把参数(对象)转成formdata传给后端? 封装函数 亲测有效

    普通传参格式如下: 想要的formData参数格式如下: 首先封装参数(对象)转换为formData格式 getFormData(object) { const formData = new Form ...

  9. css - content-visibility

    css - content-visibility content-visibility:实现可见网页只加载可见区域内容 介绍 content-visibility是一个css属性,它控制一个元素是否呈 ...

  10. 硬件IIC主从机中断代码注释解析

    目录 硬件IIC的主从中断在582的最新EVT中已支持. 对于IIC从机中断,例程中已封装好中断处理过程,用户调用app_i2c时,初始化中需要配置回调函数. 初始化的配置如下. struct i2c ...