2019-2020-2 基于Windows的信息安全专业导论学习容器的构建 小组报告
北京电子科技学院
《信息安全工程技术应用》课程设计报告
基于Windows的信息安全专业导论
学习容器的构建
小组成员姓名:20175104李屹哲
20175113完 瑞
20175133于沛辰
指导教师:娄嘉鹏
提交时间:2020年5月3日
一、设计方案及可行性分析
在Windows10 pro环境下使用docker构建ubuntu镜像,通过TightVNC开放端口构建图形化界面,配置Python+anaconda环境,配置Vscode,达到信息安全专业导论学习容器的目的。
该容器相较于虚拟机存储小,易下载操作,避免配置环境过程中的问题,完全适用信息安全专业导论学习。
二、详细设计思路
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 功能呈灰色,若无法勾选,修改vm文件夹下的.vmx文件,添加语句
hypervisor.cpuid.v0 = "FALSE"
mce.enable = "TRUE"
vhv.enable = "TRUE"
- 最后功打开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:5900dorowu/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扩展包、C/C++插件以及code runner
- 输入指令安装调试程序gdb apt-get install gdb
3) 调试Python代码
- 打开之前的 helloworld.py 运行并调试
5、 安装并测试pep/9环境
1) 下载安装Pep9
- 进入Pep/9官网,选择Pep/9 Windows版下载,下载完成后按默认选项安装即可正常打开使用
2) Pep/9内调试汇编代码
- 打印“Hi”:在 Source Code 区输入汇编指令,Build→Run Source或直接点击上方绿色箭头
LDBA 0x0048,i //将“H”加载到计数器
STBA 0xFC16,d //将计数器的内容输出
LDBA 0x0069,i //将“i”加载到累计数器
STBA 0xFC16,d //将计数器的内容输出
.END //停止
- 可以在 Object Code 区观察到汇编指令对应的机器指令,这里做下解析:
D0 00 48 //把 H 放入计数器
F1 FC 16 //打印计数器内存储的字节
DO 00 69 //把 i 放入计数器
F1 FC 16 //打印累计数器内存储的字节
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
D1 FC 15 //将输入设备中的第一个字符读入计数器
F1 00 13 //将字符从计数器存储到内存中
D1 FC 15 //将第二个字符从输入设备读入计数器
F1 FC 16 //将第二个字符打印到输出设备
D1 00 13 //从内存中加载第一个字符
F1 FC 16 //打印第一个字符到输出设备
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
- 下面给出三个测试代码运行结果
//正弦函数
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()
//散点图
import numpy as np import matplotlib.pyplot as plt x = np.random.normal(0,1,500) y = np.random.normal(0,1,500) plt.scatter(x,y,s=50,color='blue',alpha=0.5) #s指点大小,alpha指透明度 plt.show()
//小海龟画Z
import turtle //引入一个绘图库
turtle.goto(100,100)
turtle.goto(100,-100)
turtle.goto(-100,-100)
turtle.goto(-100,100)
turtle.goto(0,0)
7、 容器打包并上传
1) 注册个人账号,创建个人仓库
- 打开docker hub官网,注册用户
- 注册完成后,创建个人公开库
2) 将容器打包成镜像
- 打开命令提示符,根据容器创建镜像: docker commit (container ID)注册用户名/仓库名:tagname
3) 上传个人镜像
- 上传镜像: docker push 注册用户名/仓库名:tagname
4)常用指令
- 拉取镜像: docker pull 镜像名
- 上传镜像: docker push 镜像名
- 运行容器: docker start 容器名
- 构建镜像: docker commit 容器名 镜像名
- 拉取镜像并运行一个容器: docker run 镜像名
- 列出全部镜像: docker image ls
- 列出全部容器: docker container ls --all
- 删除容器: docker rm 容器名
- 删除镜像: docker rmi 镜像名
三、设计特色
使用时下新颖的docker容器技术,Docker的构想是要实现“ Build , Ship and Run Any App, Anywhere”,即通过对应用的封装( Packaging )、分发( Distribution )、部署( Deployment )、运行( Runtime )生命周期进行管 理,达到应用组件级别的“ 一次封装,到处运行”。Docker对比虚拟机资源利用率更高,开销更小,启动速度更快,更适用于开发。这次课设任务是构建信息安全专业导论学习容器,为学习者提供良好的编程、应用环境。
四、小组成员个人博客
- 20175113 完 瑞:https://www.cnblogs.com/besti5113/p/12817138.html
- 20175133 于沛辰:https://www.cnblogs.com/BESTIYPC/p/12811563.html
五、参考书籍和网址
- https://blog.csdn.net/hbxtlhx/article/details/40395207?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-11
- https://www.runoob.com/docker/docker-container-usage.html
- Docker技术入门与实战(第三版) 机械工业出版社