在一些进行使用靶场或者工具的时候,我们可以用docker在线拉取,就可以省去手动搭建靶场的过程
一、docker的配置
因为docker是默认从docker的官网进行拉取,所以拉取经常速度很慢或者失败,我们先要进行一下配置,让他优先从国内镜像进行拉取
第一种方法:
1.第一步:进入/etc/docker路径
vim /etc/docker/daemon.json
2.第二步:编辑daemon.json文件,更换国内镜像源
{
"registry-mirrors":[
"https://9cpn8tt6.mirror.aliyuncs.com",
"https://registry.docker-cn.com"
]
}
一般进行到这一步就可以成功拉取镜像了
第三步:重启docker,拉取镜像
systemctl start docker
docker pull nginx
第二种方法:
1.第一步:进入/etc/resolv.conf文件
vi /etc/resolv.conf
2.第二步:修改nameserver对应的DNS为加粗样式223.5.5.5【阿里云的DNS】
在这里插入图片描述
重启虚拟机,重启docker,拉取镜像
#重启虚拟机
reboot
#重启docker
systemctl restart docker
#拉取镜像
sudo docker run hello-world
二、docker搜索和拉取镜像的简单操作
1.Docker镜像搜索
如果你需要查找Docker Hub上可用的镜像,可以通过以下命令实现:
docker search [image_name]
例如下面我搜索的是所有的sqli-labs靶场
2.用docker拉取镜像
拉取镜像:
docker pull 镜像名称
下面我们来拉取的是一个sqli-labs靶场
通过镜像下载容器:
docker run --rm -it -p 80:80 acgpiano/sqli-labs
补充: -p 80:80 是将容器里的80端口(右边的80端口)映射到kali的80端口(左边的80)(网站服务)
这里点进去会显示没有数据库,可以在这个链接里面看一下解决方法:sqli-labs Unable to connect to the database: security 解决办法_unable to connect to the database: challengesacces-CSDN博客
下面是大概步骤,就是进入到镜像的bin/bash界面,登录数据库(空密码),然后再创建个数据库security即可
启动成功之后还可以用docker ps -a进行查询开启的端口
3.查看所有拉取镜像
docker images -a
OPTIONS说明:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- --digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- --format :指定返回值的模板文件;
- --no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。
可以查看到我们拉取的所有镜像
4.删除指定镜像
删除镜像:
docker rmi [OPTIONS] IMAGE [IMAGE...]
删除镜像的命令格式为:其中,OPTIONS是可选项,IMAGE是要删除的镜像名称或ID,可以同时删除多个镜像
例如,如果要删除名称为“nginx”的镜像:
docker rmi nginx
如果要删除ID为“c3f279d17e0a”的镜像:
docker rmi c3f279d17e0a
如果要删除多个镜像,可以在命令中指定多个镜像名称或ID
docker rmi nginx mysql redis
如果提示已经存在运行中的容器,我们可以用下面命令进行删除容器
kill杀死他提示已经运行的容器,然后再进行删除镜像