2019-2020-2 20175133 于沛辰 基于Windows的信息安全专业导论学习容器的构建 个人报告
北京电子科技学院
《信息安全工程技术应用》课程设计报告
基于Windows的信息安全专业导论
学习容器的构建
小组成员姓名:20175133于沛辰
指导教师:娄嘉鹏
提交时间:2020年5月3日
一、实践理解
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。据我了解到,Docker 正是众多容器技术中的佼佼者,所以这次实践选用docker来完成课题。
二、列出自己的贡献
因为我们每个人都部署了信息安全专业导论学习容器,工作量一致,在构建容器过程中,小组成员互相学习讨论,相互借鉴,终于完成了本次课程设计,所以排名不分先后
20175133 于沛辰:解决安装docker过程遇到的问题
三、实践步骤
(1)安装Windows10 pro虚拟机
·下载镜像文件,配置Windows10 pro环境:在迅雷直接下载 thunder://QUFodHRwOi8veHozLmRhb2hhbmc0LmNvbS9jbl93aW5kb3dzXzEwX2NvbnN1bWVyX2VkaXRpb25zX3ZlcnNpb25fMTkwOV94NjRfZHZkXzc2MzY1YmY4Lmlzb1pa
·安装Vm-tools,开启共享文件夹
·开启Hyper-v服务
(2)安装docker
·从官网下载Docker Desktop
·安装并测试docker
(3)建立图形化的ubuntu容器&配置python环境
·安装TightVNC:在官网下载并安装TightVNC
·输入指令 docker run -p 6080:80 -p 5900:5900 dorowu/ubuntu-desktop-lxde-vnc:xenial 下载和运行图形化的ubuntu容器
·使用VNC远程连接容器端口建立容器图形化界面:在菜单里找到应用程序TightVNC View,并输入远程地址 127.0.0.1:5900获得连接
·更新源,配置python3.6、python3-pip:更改下载源找到文件夹 /etc/apt/sources.list 命令行输入指令 apt-get update更新软件源
·调试python环境:输入指令 apt install python3.6 和 apt install python3-pip 安装Python环境,
(4)配置vscode环境
·在图形化容器中打开浏览器,在vscode官网下载需要的软件,如下图,选择 .deb
·下载完成后见安装包,输入指令安装vscode dpkg -i code_1.44.2-1587059832_amd64.deb
·打开vscode
·在应用拓展中搜索关键词,安装语言包、Python拓展包,C/C++拓展包
·安装成功后调试之前建的Python文件,可以看到可以正常打开调试
(5)安装并测试pep/9环境
·直接在主机上打开进入Pep/9官网,选择Pep/9 Windows版下载,下载完成后按默认选项安装即可正常打开使用
该应用程序是用c++编写的,使用Digia Plc提供的Qt Creator IDE在Qt 5开发环境下编译。
2.测试Pep/9环境
·测试1:打印“Hi”,在Source Code区输入汇编指令:
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
代码解析:
D0 00 48 //把 H 放入累加寄存器
F1 FC 16 //打印累加寄存器中存储的字节
DO 00 69 //把 i 放入累加寄存器
F1 FC 16 //打印累加寄存器中存储的字节
00 //停止
zz //结束标识符
执行后:
·测试2:倒序输出字节(16进制机器指令),在Object Code区输入16进制汇编指令:
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环境
Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,所以也称为Python的一种发行版。
·在图形化中打开anaconda官网并下载anaconda,下载好后见安装包
·在终端输入指令 bash Anaconda3-2020.02-Linux-x86_64.sh 安装一下anaconda
·中途阅读相关条例时回车略过,最后输入yes完成安装
·输入anaconda-navigator运行图形化界面
·安装完成后关闭当前终端,新打开一个终端后输入指令构建新的Python环境: conda create -name python36 python3.6
·输入指令安装一下numpy、matplotlib这两个库,防止后面会报错
conda install numpy
conda install matplotlib
·这里给出查看和切换环境的相关指令,更多细节可以参考官方指导或者这篇帮助
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 //查看所有安装的环境
·编译执行一下下面的代码(召唤小海龟写Z)
import turtle //引入一个绘图库 turtle.goto(100,100) turtle.goto(100,-100) turtle.goto(-100,-100) turtle.goto(-100,100) turtle.goto(0,0)
(7)容器打包并上传
·注册个人账号,创建个人仓库,将容器打包成镜像,上传个人镜像
·之前下载时就已经注册过docker账户,所以直接创建个人库(我这里账户名和库同名) ypc20175133
·先输入指令 docker ps -a 查看所有的容器的信息
·执行以下命令完成镜像的传输:
创建容器镜像: docker commit a5751e1ddef6 ypc20175133/ypc20175133:vs_1
上传镜像: docker push ypc20175133/ypc20175133:v_1
从库中下载镜像: docker pull ypc20175133/ypc20175133:v_1
释义:
a5751e1ddef6 //上图第一列容器所对应的CONTAINER ID
ypc20175133/ypc20175133:vs_1 // docker注册名/库名称:设置的容器名称
四、遇到的问题及解决方法
1、计算操作系统机位数不统一
·因为电脑配置问题,我的操作系统系统是32位的,通过学习了解老师提供的教材,我得知此次实践因该在64位的操作系统下完成,于是我上网查了一下方法下载了一个CPU-Z查看了一下电脑CPU支持虚拟化
2、虚拟机无法打开虚拟化
·无法打开Hyper-v:一打开时会提示“启用虚拟化”,修改vm文件夹下的.vmx文件,添加下图语句,最后功打开Hyper-v
3、内存问题
·安装docker后第一次打开,遇到了内存不够,重新配置了一下虚拟机,算是解决了
4、有关镜像
·遇到镜像无法复制的问题,在settings中选择Docker Engine,修改底下的代码“false→true”
5、有关Pep/9
·主机环境下安装测试Pep9环境
五、实践体会
通过为期三周的实践学习,让我对一个新的知识领域——容器有了一定的了解,也对虚拟化技术有了一定的了解,实践过程中遇到了许多闻所未闻的问题,但是在小组商讨和在网上查阅了大量资料后,问题都算逐一解决,尤其是面对pep9时,在学习资源不足时,在官网的英文介绍下了解到了它的运行机制和原理。整个实验过程中,我遇到的问题可以说是最多的,但是看到自己配置的容器成功运行时,内心还是很有成就感的。
六、参考文献和网址
·《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
七、部分常用指令
- 拉取镜像: docker pull 镜像名
- 上传镜像: docker push 镜像名
- 运行容器: docker start 容器名
- 构建镜像: docker commit 容器名 镜像名
- 拉取镜像并运行一个容器: docker run 镜像名
- 列出全部镜像: docker image ls
- 列出全部容器: docker container ls --all
- 删除容器: docker rm 容器名
- 删除镜像: docker rmi 镜像名