【使用指南】Docker上搭建Sqli-labs及使用

Docker上搭建Sqli-labs及使用

Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。它可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 移动端的app),更重要的是容器性能开销极低。

Ubuntu安装Docker

sudo apt install apt-transport-https ca-certificates software-properties-common curl
# 安装需要的包
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable"
# 添加 GPG 密钥,并添加 Docker-ce 软件源
sudo apt update
# 添加成功后更新软件包缓存
sudo apt install docker-ce
#安装 Docker-ce

docker info
# 查看docker信息,确认docker安装成功

sudo groupadd docker
sudo usermod -aG docker $USER
# 添加当前用户到 docker 用户组,可以不用 sudo 运行 docker(可选)

下载sqli-labs镜像容器

docker search sqli-labs
# 搜索sqli-labs的镜像

docker pull acgpiano/sqli-labs
# 下载镜像,可以自由选择

运行及使用

images是镜像,运行镜像后是容器

docker images
# 查看存在的镜像

docker image rm <id>
# 删除镜像

docker run -dt --name sqli -p 80:80 --rm acgpiano/sqli-labs
# 运行存在的镜像;-dt 后台运行;--name 命名;-p 80:80 将后面的docker容器端口映射到前面的主机端口;--rm 运行完删除容器

docker exec -it <CONTAINER ID> /bin/bash
# 进入运行中的容器

docker run -it --rm ubuntu /bin/bash
# 运行存在的镜像,并以交互的方式进入容器,运行完删除容器

docker ps
docker container ls
# 查看运行中的容器

docker stop <CONTAINER ID>
# 停止指定的容器,不指定为所有的容器

docker  rm
# 删除所有的容器

docker container [stop/start/restart]
# 停止/开启/重启容器

docker container kill <CONTAINER ID>
# 强行终止容器

docker commit -p <CONTAINER ID> container-backup
# 创建Docker的快照

无论是把宿主机的东西拷贝进容器还是把容器中的东西拷贝进宿主机中,都需要在宿主机下执行命令

  • 宿主机拷文件到容器里面

    docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

  • 容器里面拷文件到宿主机

    docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径


Docker的概念分析

​ Docker 是基于 linux 内核的 cgroup 和 namespace 等实现的进程隔离技术,是操作系统层面的虚拟化技术。由于进程在宿主机上被分割成独立的空间,就像一个独立的容器将这些进程与外界隔离开来,因此被称为容器 。

​ Docker 是操作系统层面的虚拟化技术,不需要虚拟化硬件,同一宿主机器上的所有容器共享宿主机的硬件和操作系统内核,只是在用户态隔离进程的运行环境和存储空间,因此对于上层用户而言一个容器就好像是一台独立的主机。容器是一种轻量的虚拟化技术

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看着一个代码控制中心,用来存放镜像。

你可能感兴趣的:(使用指南)