创建南京大学jyy老师操作系统实验环境

在ubuntu(wsl或者虚拟机皆可)系统上创建相对应的实验环境;默认机器上已经安装了Docker。

创建根目录文件夹存放Dockerfile和相关文件

这个文件夹用来存放Dockerfile和要用到的相关文件

mkdir my_experiment # 创建my_experiment文件夹
cd my_experiment

创建Dockerfile

首先需要创建一个Dockerfile,Dockerfile 是一个文本文档, 其中包含用户在命令行上调用的所有命令,用于创建镜像;Docker可以直接根据Dockerfile中的 指令自动构建镜像。

vim Dockerfile

在创建好的Dockerfile中添加下面的指令;

FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install -y build-essential gcc-multilib qemu-system strace gdb sudo python3 libsdl2-dev libreadline-dev
RUN apt-get upgrade -y

创建docker镜像

使用Docker CLI创建Docker镜像

docker build -t my_experiment_image .

在创建Docker镜像时,很容易遇到一些…..坑,比如网络问题=_=,我在解决网络问题时,使用了一些镜像加速,下面是创建镜像加速配置文件的步骤;

# 创建配置文件
sudo vim /etc/docker/daemon.json

在创建好的配置文件中添加相应的镜像加速配置

{
  "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"]
}

在创建好上面的配置文件后,需要重新加载一下配置并且重启一下Docker,使用下面的dash指令可以完成相应的操作;

sudo systemctl daemon-reload    # 重新加载配置文件
sudo systemctl restart docker   # 重启Docker

在解决完网络问题后,重新创建一下Docker镜像即可。

启动Docker镜像

使用创建好的镜像(my_experiment_image)运行一个容器

docker run -it my_experiment_image

-it操作是操作-i和操作-t的组合,-i 选项使容器保持标准输入STDIN打开;-t操作表示分配一个伪终端pseudo-TTY给容器
至此实验环境搭建完成,可以开始咯 :P

在首次创建并且启动Docker container后,我们可以使用Ctrl + D退出当前container,如果下次想进入相同的container,可以直接通过container id 进入同一个container;

# 查看所有container id
docker ps -a
# 假设我们创建的container id为1234565
## 启动之前创建的container
docker start <container id> # 将<container id>替换为自己创建的container id => docker start 1234565
## 进入container的交互式shell
docker exec -it <container id> /bin/bash # 将<container id>替换为自己的id,docker exec -it 123456 /bin/bash