## 基础镜像构建 ```bash # 更新 $ apt update $ apt install sudo $ apt install vim $ apt install curl $ apt install wget $ apt install build-essential # 安装 jupyter所需要的基础软件 $ apt install ca-certificates # 创建一个rocker用户和他的home $ useradd -m -s /bin/bash rocker -u 7788 # 创建密码 quant_u2Oh0Go9J76aQb3h7Ybg2apw@yanguangshaonian $ passwd rocker # 创建一个rocker的用户组并把上面的用户添加到组中 $ usermod -g 7788 -aG rocker rocker # 删除ubuntu用户和他的组 $ userdel -r ubuntu && groupdel ubuntu # 允许sodo权限 /etc/sudoers 添加 %rocker ALL=(ALL:ALL) ALL $ echo "%rocker ALL=(ALL:ALL) ALL" >> /etc/sudoers # vi编辑 /etc/group 最后修改或者添加 rocker:x:7788:rocker $ vi /etc/group # vi 编辑 /etc/passwd 最后修改或者添加 rocker:x:7788:7788:rocker:/home/rocker:/bin/bash $ vi /etc/passwd # 创建 /log/logs 文件 $ mkdir /logs && touch /logs/log && chmod 777 /logs && chmod 777 /logs/log # 切换用户 $ su rocker && cd ~ # rocker用户 安装rust $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # rocker用户 安装pypy # 官网下载上传二进制文件就行了 # rocker用户 安装go # 官网下载上传二进制文件就行了 # rocker用户 安装g++ # build-essential带的有 # 安装node $ mkdir node && cd node $ wget https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz $ tar xvf node-v14.17.0-linux-x64.tar.xz && rm -rf node-v14.17.0-linux-x64.tar.xz $ cp -rf node-v14.17.0-linux-x64/* ./ && rm -rf node-v14.17.0-linux-x64 # 清空root和rocker用户的 .viminfo # 清空root和rocker用户的 history历史命令 $ echo > ~/.viminfo && history -c && echo > ~/.bash_history # docker 导出 $ docker export CONTAINER > base_ubuntu_image.tar # 解压后的操作, 解压后检查 $ tar -xvf base_ubuntu_image.tar && rm -rf base_ubuntu_image.tar # vi 编辑 etc/resolv.conf, 添加 nameserver 8.8.8.8 $ echo "nameserver 8.8.8.8" > etc/resolv.conf # vi 编辑 etc/hosts 添加 127.0.0.1 rocker $ echo "127.0.0.1 rocker" > etc/hosts # 删除多余文件 $ rm -rf .dockerenv # 删除需要编译的语言 测试用生成的可执行程序(比如 rust/go/cpp) $ rm -rf rust_project/target/rust_project $ rm -rf cpp_project/main $ rm -rf go_project/go_project # 在入镜像的主目录压缩, 再次压缩 即可使用 tar -czf ../base_ubuntu_image.tar.gz . # copy到images $ cp base_ubuntu_image.tar.gz /home/rocker/images/base_ubuntu_image $ rm -rf /home/rocker/volumes/base_ubuntu_image ```