• Docker 折腾记录


    ​为了学习 PWN,一个好的虚拟环境是必不可少的。一开始我选择了vm ware虚拟机,但是好景不长,不久我就发现采用虚拟机过于臃肿。

    image.png

    ​所以我需要一个更加轻量的虚拟化容器。最后我选择了docker。

    ​docker这个东西类似于沙箱,因为Linux类系统内核一样,有所区别的只有他们的用户层程序。所以只需要一个能够承载其他发行版Linux用户程序的容器,就可以模拟出所有的Linux系统。甚至可以定义和打包自己的Linux环境。因为没有内核和没用的第三方软件的空间,docker相当轻量,也给自定义开发环境带来了很大的自由。所以我尝试着把部分Linux虚拟机迁移到docker上。

    ​菜鸟教程上说,Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的 Linux 主机。

    ​因此,Docker 必须部署在 Linux 内核的系统上。如果其他系统想部署 Docker 就必须安装一个虚拟 Linux 环境。但是这个虚拟环境是所有docker共用的,所以相对虚拟机来说还是划算的。

    image.png

    接下来我们就开始搭建docker环境。

    开搞

    准备

    ​我们需要在docker hub上注册一个账号。docker最强的地方在于他的容器足够轻量,可以在网络上进行同步管理。所以一个docker hub账号必不可少。然后在你的账户下新建一个仓库,用来备份之后的镜像。

    ​docker hub 官网:https://registry.hub.docker.com

    ​接下来我就可以创建一个自己的环境了。

    ​然后就是一些基础的命令教程,这篇文章并不是 docker 教程,而是一个心路历程,希望别人看了以后不会踩同样的坑。docker 自身的命令帮助相当详细,上手不会太难。

    ​然后就是 docker 镜像下载加速。因为一些众所周知的原因,我们这里拉取 docker hub 上镜像的速度相当慢,这个时候需要一些加速手段。这个就自行百度吧。毕竟镜像加速的手段要以你所在的时间的可用手段为准。

    需要的目标环境

    ​我现在需要一个以ubuntu系统为蓝本的docker。然后需要 g++ gcc 编译器,gdb调试器,gdb的peda插件,git用于代码管理。ssh-server用来方便系统从外部连接到docker,同时方便用vscode连接到docker编写代码。然后一个VIM编辑器方便docker修改部分配置文件。

    创建虚拟环境

    ​我们首先要去 dockerhub 找一个基础镜像。我选择的是 ubuntu,因为 ubuntu 较为易用(我比较熟悉)。我们用这个命令拉取镜像

    docker pull ubuntu
    

    ​我们通过 docker images这个命令来查看所有的镜像。

    image.png

    ​在上面 REPOSITORY 是你在docker hub上的项目名,如果你刚从ubuntu上下载下来应该是ubuntu。我自己的是 lixiao189/testubuntu。tag 是镜像的标签,常常用来区分版本。

    ​接下来就是构建docker了。docker镜像的构建我们可以通过 dockerfile 来进行。关于dockerfile的编写与使用,可以参看这篇博客

    ​https://www.cnblogs.com/wdliu/p/10469257.html

    ​假如你目标明确的话,这一部就应该能直接完成镜像的构建。但不幸的是,因为是第一次上手,我有一些软件漏了。所以接下来就是进docker搞了。先用命令生成一个容器

    docker run -it -p 23:22 -u root lixiao189/testubuntu:v5.01
    

    ​上面这个命令中 -it-i-t选项的结合,-p是指定端口映射,23是你的本机端口,22是你的docker端口,因为docker中我们要开启ssh服务,所以要将ssh服务的22号端口映射到本机的23号端口上,然后-u是指定用户名。这里是root,接下来我们制定镜像,镜像名由 docker hub 上的仓库名和 tag 标签组成。

    ​接下来我们就得到了一个容器,并且会自动进入。然后进去完成用户添加,和漏掉的软件安装就好了。然后按下 ctrl+D退出docker。退出的时候 docker 会自动停止。然后就是 docker 的提交了。docker 可以采用 commit 选项提交。之后就能生成一个新的镜像。接下来我们只要用 docker 的 push 选项将本地镜像提交到 hub 上。这两个命令的用法可以自己百度,或者用 --help选项获取帮助

    image.png

    image.png

    ​假如说你 ssh-server 安装好了,就可以通过这些命令来启动容器,同时自启动 ssh 服务。

    docker start hackubuntu # 后台启动镜像
    docker exec -t hackubuntu service ssh start # 启动 ssh 服务	
    

    ​由于我讲虚拟机映射到本机的 23 号端口,因此用下面的命令连结ssh。

    ssh 127.0.0.1 -p 23 -l node # node 是容器中的一个普通账户
    

    ​docker 的镜像确实都是很精简的,就是自己配置需要跟花时间。访问速度也很快,启动秒开。可以在mac上还套了层虚拟机,要是在 linux 上体验应该更佳。

  • 相关阅读:
    HDFS高阶
    Flume学习笔记
    Yarn学习笔记
    二进制中1的个数
    二叉搜索树的后序遍历
    空指针
    web第十天总结
    绩效考核系统
    制作流程图,activity,好不容易找到的
    职业规划
  • 原文地址:https://www.cnblogs.com/Node-Sans-Blog/p/14284314.html
Copyright © 2020-2023  润新知