Docker安装
Docker简介
Docker是什么
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器
中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机
制,相互之间不会有任何接口。
Docker组成部分
Docker Client客户端
Docker Daemon守护进程
Docker Image镜像
Docker Container 容器
Docker环境安装
- 安装必要的一些系统工具
sudo apt update
- 添加 Docker PGP key
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce-archive-keyring.gpg
- 写入软件源信息
printf ‘%s\n’ “deb https://download.docker.com/linux/debian bullseye stable” | sudo tee /etc/apt/sources.list.d/docker-ce.list
- 更新 APT
sudo apt update
- 如果安装了旧版本的 Docker ,先卸载它们
sudo apt remove docker docker-engine docker.io
- 安装 Docker
apt install docker-ce docker-ce-cli containerd.io
- 证明安装完成
doeker ps
docker --version
- 查看 Docker 状态
systemctl status docker
- 开机自动启动
systemctl enable docker
- 安装 docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.12.2/docker-compose-
uname -s
-uname -m
> /usr/local/bin/docker-compose
- 给与权限
chmod +x /usr/local/bin/docker-compose
Docker基础操作
service docker restart重启Docker服务
service networking restart重启网络服务
Docker镜像操作
- 列出镜像
docker images 或者 docker image ls -a
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGEID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
- 拉取镜像
docker image pull hello-world 或者 docker image pull library/hello-world
docker image pull:抓取 image 文件的命令
library/hello-world:image 文件在仓库里面的位置
library:是 image 文件所在的组
hello-world:是 image 文件的名字
删除镜像
docker image rm 镜像名或镜像id :latest
docker rmi 镜像名或镜像id
如:
docker image rm hello-world:latest
docker rmi feb5d9fea6a5
Docker容器操作
- 创建容器
docker run [option] 镜像名 [向启动容器中传入的命令]
- 常用可选参数说明:
-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
–name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-e 为容器设置环境变量
–network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
- 交互式容器
# 创建一个交互式容器,并命名为mycentos
docker run -it --name=mycentos centos /bin/bash
# 在容器中可以随意执行linux命令,就是一个centos的环境,当执行exit命令退出时,该容器
也随之停止。
- 守护式容器
# 创建一个守护式容器,并命名为mycentos2
docker run -dit --name=mycentos2 centos
# 如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出
时,容器也不会停止。
- 进入运行容器
docker exec -it 容器名或容器id 进入后执行的第一个命令
例如:
docker exec -it mycentos2 /bin/bash
- 查看容器
列出本机正在运行的容器
docker container ls = docker ps
列出本机所有容器,包括已经终止运行的
docker container ls all = docker ps -a
- 停止与启动容器
停止一个已经在运行的容器
docker container stop 容器名或容器id
docker stop 容器名或容器id
启动一个已经停止的容器
docker container start 容器名或容器id
docker start 容器名或容器id
kill掉一个已经在运行的容器
docker container kill 容器名或容器id
docker kill 容器名或容器id
- 删除容器
docker container rm 容器名或容器id
docker rm 容器名或容器id
容器保存为镜像
# docker commit 容器名 镜像名
docker commit mycentos3 mycentos3
镜像备份与迁移
可以通过save命令将镜像打包成文件,拷贝给别人使用
# docker save -o 保存的文件名 镜像名
docker save -o ./mycentos3.tar mycentos3
对方在拿到镜像文件后,可以通过load方法,将镜像加载到本地
docker load -i ./centos.tar
Docker搭建漏洞靶场
Vulhub
- 在kali终端复制如下命令,克隆项目到本地:
git clone https: github.com/vulhub/vulhub.git
- 进入目录选定自己需要使用到的靶场,使用命令拉取镜像并开启容器。
cd vulhub-master
cd thinkphp/5.0.23-rce
docker-compose up -d
Vulnapp
- 打开浏览器访问
https://github.com/Medicean/VulApps
-
查看漏洞所对应的目录下的 README.md 文件
-
然后按照文档给的环境启动命令依次复制粘贴到服务器上执行即可
# 以启动thinkphp漏洞环境为例
docker pull medicean/vulapps:t_thinkphp_2
docker run -d -p 80:80 medicean/vulapps:t_thinkphp_2
#-p 80:80 前面的 80 代表物理机的端口,可随意指定;后面的 80 为docker容器中的web服务端口,默认端口80。
Vulfocus
#Vulfocus 官网
https: github.com/fofapro/vulfocus
#在线 Vulfocus
https: vulfocus.cn/
#Vulfocus 镜像仓库
https: hub.docker.com/u/vulfocus
- 通过 docker 拉取镜像 vulfocus/vulfocus
docker pull vulfocus/vulfocus:latest
- 开启靶场
docker create -p 88:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=xx.xx.xx.xx vulfocus/vulfocus
- 参数介绍
-p 前边的端口代表物理机的端口,后边的端口是docker的端口
-v /var/run/docker.sock:/var/run/docker.sock 为 docker 交互连接。
e VUL_IP=xxx.xxx.xxx.xxx 为运气 Docker 的服务器 IP ,不能为 127.0.0.1。
- 上述步骤只是添加了 docker 容器,并未进行启动,需要通过命令启动
docker container start 容器ID
- 此时靶场已经开启,打开浏览器访问服务器IP加88端口即可打开
http: 192.168.81.57:88
默认账号密码为 admin admin
docker run -d privileged -p 88:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=xx.xx.xx.xx vulfocus/vulfocus
最好不用