北京电子科技学院
《信息安全工程技术应用》课程设计报告
基于Windows的信息安全专业导论学习容器的构建
小组成员姓名:20175104李屹哲
20175113完 瑞
20175133于沛辰
指导教师:娄嘉鹏
一、 详细设计思路
1、 安装Windows10 pro虚拟机
1) 下载镜像文件,配置Windows10 pro环境
-
- 下载镜像文件: thunder://QUFodHRwOi8veHozLmRhb2hhbmc0LmNvbS9jbl93aW5kb3dzXzEwX2NvbnN1bWVyX2VkaXRpb25zX3ZlcnNpb25fMTkwOV94NjRfZHZkXzc2MzY1YmY4Lmlzb1pa
- 新建一个虚拟机,打开下载的镜像文件
2) 安装Vm-tools,开启共享文件夹
-
- 安装完成后安装 vm tools(正常会自动安装)
- 虚拟机→选项→共享文件夹,启用共享文件夹,共享文件夹可在win10 网络下找到
3) 开启Hyper-v服务
- 在Windows10 pro上打开 Hyper-v 功能:控制面板→程序→程序和功能→启用或关闭windows功能,勾选 Hyper-v 功能
- 如果 Hyper-v 功能呈灰色,无法勾选,可以参考这篇博客来配置虚拟机配置文件
2、 安装docker
1) 从官网下载Docker Desktop
-
- 下载 Docker Desktop(可在虚拟机打开浏览器直接下载,也可在主机中下载,共享文件夹导入,个人建议后者)
2) 安装并测试docker
- 运行 docker version:确认你有一个支持的docker版本
- 运行 docker run hello-world:从docker hub上获取hello-world镜像并运行一个容器
- 如果提示无法匹配镜像,将设置中 Docker Engine中“experimental:false”改为“experimental:true”,之后就可以匹配镜像了
- 运行 docker image ls:列出全部的镜像
- 运行 docker container ls --all :列出全部的容器
- 以上就是docker从docker hub下载镜像、构建容器的一些指令,具体更多操作参考官方指导
3、 建立图形化的ubuntu容器&配置python环境
1) 下载和运行图形化的ubuntu容器: docker run -p 6080:80 -p 5900:5900 dorowu/ubuntu-desktop-lxde-vnc:xenial
2) 下载安装TightVNC
3) 使用 TightVNC Viewer 远程连接容器端口建立容器图形化界面
-
- 如果报错,关闭右下角 TightVNC 服务,再用管理员身份启动 TightVNC Viewer
4) 更新源,配置python3.6、python3-pip
- 更新下载源:
- 在 /etc/apt/sources.list 文件中加入163源
-
-
-
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
-
- 更新软件列表: apt-get update
- 安装python环境: apt install python3.6 、 apt install python3-pip
-
5) 调试python环境
- 新建一个python文件: touch helloworld.py
- 用leafpad编辑 helloworld.py : leafpad helloworld.py
- 在文本内输入: print('hello world!')
- 运行 helloworld.py : python helloworld.py
- 运行成功,打印了 hello world!
-
- 再用leafpad编辑helloworld.py: leafpad helloworld.py
- 换一段测试代码,程序功能:暂停一秒输出,并格式化当前时间
- 运行成功,证明python环境可用
4、 配置vscode环境
1) 配置Vscode
-
- 进入官方网站下载最新版本:https://code.visualstudio.com(选择deb)
- 安装vs code: dpkg -i code_1.44.2-1587059832_amd64.deb
2) Vscode中安装Python拓展包
-
- 在扩展商店搜索 language packs 并下载中文汉化包
- 在扩展商店搜索 python 并下载python扩展包
3) 调试Python代码
- 打开之前的 helloworld.py 运行并调试
5、 安装并测试pep/9环境
1) 下载安装Pep9
-
- 进入Pep/9官网,选择Pep/9 Windows版下载,下载完成后按默认选项安装即可正常打开使用
2) Pep9内调试汇编代码
- 打印:Hi
- 在 Source Code 区输入汇编指令,Build→Run Source(快捷键:Ctrl+R)
-
LDBA 0x0048,i ;Load 'H' into accmulate STBA 0xFC16,d ;Store accmulator to output device LDBA 0x0069,i ;Load 'i' into accmulate STBA 0xFC16,d ;Store accmulator to output device
.END ;Stop
- 可以在 Object Code 区观察到汇编指令对应的机器指令,这里做下解析:
-
D0 00 48 //把 H 放入累加寄存器 F1 FC 16 //打印累加寄存器中存储的字节 DO 00 69 //把 i 放入累加寄存器 F1 FC 16 //打印累加寄存器中存储的字节 00 //停止 zz //结束标识符
-
- 两个字符的倒序输出:
- 在Object Code区输入汇编指令,Build→Run Object
-
D1 FC 15 //将输入设备中的第一个字符读入累加器 F1 00 13 //将字符从累加器存储到内存中 D1 FC 15 //将第二个字符从输入设备读入累加器 F1 FC 16 //将第二个字符打印到输出设备 D1 00 13 //从内存中加载第一个字符 F1 FC 16 //打印第一个字符到输出设备 00 //停止 zz //结束标识符
- 两个字符的倒序输出:
6、 拓展内容-配置anaconda环境
1) 配置anaconda
-
- Anaconda可以从官网下载,选择Linux环境安装包下载(建议选择Python3.7版本,因为Python3正在逐渐替代Python2;这里我选用Python3版本,但其实,版本的选择在anaconda中并不是一个问题,因为通过环境管理,我们可以很方便地切换运行时的Python版本)
- 安装Anaconda: bash Anaconda3-2020.02-Linux-x86_64.sh
- 安装过程中会要求阅读相关协议,最后输入 yes确认开始安装,安装会选择创建一个目录,选择完毕后回车进行安装
- 安装完成后关闭当前终端
2) 构建Pyhton环境
-
- 再开终端可以构建新的Python环境: conda create --name python36 python3.6
-
- 这里给出查看和切换环境的相关指令,更多细节可以参考官方指导或者这篇帮助
-
conda -h //查看帮助 conda create --name python36 python=3.6 //基于python3.6版本创建一个名字为python36的环境 conda activate python36 //激活python3.6环境
source activate python36 //激活python36环境 conda list //查看环境下的包 deactivate python36 //退出当前python3.6环境 conda remove -n python36 --all //删除环境python36 conda env remove -n python36 //删除环境python36 conda info -e //查看所有安装的环境
3) 调试Python代码
-
- 在激活python36环境后,可以观察到命令行前多了 (python36),输入 python可进入该环境下编写代码
- 但在anaconda的python环境缺少一些库,没有这些库,编译代码就会报错:SyntaxError:invalid syntax
- 这里我们先安装numpy、matplotlib这两个库: conda install numpy、conda install matplotli
- 然后编译并执行代码(这段代码像是在写matlab)
-
from numpy import * from matplotlib.pyplot import * x = arange(0,361) y = sin(x*pi/180) plot(x,y) xlim(0,360) ylim(-1.2,1.2) title('SIN Function') show()
7、 容器打包并上传
1) 注册个人账号,创建个人仓库
-
- 打开docker hub官网,注册用户
- 注册完成后,创建个人公开库
2) 将容器打包成镜像
-
- 打开命令提示符,根据容器创建镜像: docker commit (container ID)注册用户名/仓库名:tagname
3) 上传个人镜像
-
- 上传镜像: docker push 20175113wr/20175113wr:version2
二、遇到的问题及解决
1、 无法开启Hyper-v服务:
- 在Vm配置文件中添加:
-
hypervisor.cpuid.v0 = "FALSE" mce.enable = "TRUE" vhv.enable = "TRUE"
- 重启虚拟机,再开启Hyper-v服务
2、 无法匹配镜像:
- 将docker设置中 Docker Engine“experimental:false”改为“experimental:true”
3、 图形化界面:
- 安装TightVNC,通过 TightViewer 连接容器端口构建图形化界面
4、 Pep9无法在容器环境上安装:
- 指导老师建议我们在主机环境下安装测试Pep9环境
三、体会与收获
在这三周的课设过程中,我们使用了docker容器技术,在之前课程学习中曾多次使用虚拟机技术,相较于虚拟机,docker容器更加高效、方便,更适合开发环境和学习。
在这次课设中,我们遇到了各种各样的问题,在相互交流分享中,完成了这次课设,对自己学习、实践能力是一次全新的考验,也收获了课程成果。
四、参考文献和网址
《Docker技术入门与实战 第3版》
《Computer.Science.Illuminated.7th》
https://zhuanlan.zhihu.com/p/50864774
https://www.runoob.com/docker/docker-container-usage.html
https://www.zhihu.com/question/58033789
五、课设过程博客
六、安装信息安全专业导论学习容器指南
- 确认主机是否可以开启Hyper-v服务
- 如果不能开启,建议安装使用上述Windows10 pro虚拟机
- 配置 Docker Desktop
- 配置 TightVNC
- 运行信息安全专业导论学习容器: docker run -p 6080:80 -p 5900:5900 20175113wr/20175113wr:version2