#解释
#可选参数
2. sudo docker search 搜索镜像
可选参数
搜索收藏数大于3000的镜像
指定版本下载
3 docker rmi 删除镜像
镜像id可以省略为bbf6
4 容器命令
如拉取一个centos容器
加入参数命令后
成功运行命令
简单来说这个命令就是就是增加权限的。很有必要添加的一个参数,因为在里面跳过很多坑。
下面是我经常用的参数
6 退出容器
7.列出运行过的容器
8.删除容器
9.启动和停止容器
10.拷贝操作
11. 镜像及的导入和导出
用docker搭建靶场环境是很方便的,因为容器内存是比较小的
就像下面这个容器,我已经搭建好的靶场,但是如何导出来呢。并且可以在另一台主机上再次利用。
导出和导入镜像
镜像的保存
镜像的导入
容器的导入和导出
导出镜像
导入容器快照
12. docker Portaniner图形管理界面
Portaniner是docker的图形化管理工具,类似的工具还有rancher
下载运行portaniner镜像并运行,设置本机映射端口为808
但是好像没启动
访问http://IP:端口
密码一定要符合复杂度
13.自定义Docker网络
学习网络之前需要把环境清空一下,
docker rmi -f $(docker images -q)
想把给docker容器ip地址,需要把docker网络理解了,网络方面就是Docker比较薄弱的部分。
安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host
认识docker网络几种类型
简单介绍,
bridge :桥接 docker 相当于一个大桥 0.2 0.1 0.3 01就是咱们的桥就可以转发访问了(docker默认的网络)
none:就是不配置网络
host和宿主机共享的网络
创建自定义网络
使用ip addr命令可以看到多出来一块网卡。
此时我们启动新的容器时,指定mynet即可,也就是 - -net参数
当然,咱们自定义创建的网络,可以正常访问外网,
不同网段容器通讯
创建完成之后,你会发现,跨网段是无法互相ping通的
也就是咱们的docker0 和mynet里面的容器是无法进行通信的,
使用这条命令,将tomcat01 加入到mynet里面,也就相当于,一个容器两个网卡,就可以正常通讯了
docker network connect mynet tomcat01
Docker容器通过独立IP暴露给局域网的方法
我的环境
创建自定义网络
创建一个172.172.0.0网段,网桥的名字命名为docker-br0,这两个根据自己需要来
通过ip adr可以看到我们创建的网卡
自定义ip,开启容器
进入到容器安装一些工具
查看容器ip 172.172.0.10
开启nginx服务
我们在宿主机上访问是没有问题的
我们到kali上,无法访问的
也ping不通
路由转发
此时到宿主机,开启路由转发
配置文件为 /etc/sysctl.conf
echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf
sysctl -p
到kali上面添加静态路由
添加完路由你会发现,可以ping通docker-br0我们自定义的网卡,但是ping不同容器,
Iptables策略
注意那句MASQUERADE all – 172.172.0.0/16 0.0.0.0/0会导致所有172.172.0.0/16的数据包都不能到达docker以外的网络,所以我们要关掉这个NAT,关掉很容易,我们只需删掉这一条iptables规则就可以了。然后源IP为172.172.0.10的数据包就可以出现在192.168.10.1/24的网络中了。
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all – 172.172.0.0/16 0.0.0.0/0
可以访问了
但是把NAT关掉了以后,虽然内网可以互ping了,但是Docker容器可能上不去网呀。第一个路由器如果自动NAT 了172.172.0.10还好,但要是没有人给Docker容器做NAT,Docker容器就不能上网了,那我们的nginx也就没法用了。那么如何既保证Docker容器访问外网的数据包被NAT,又保证内网通信不被NAT呢?只要稍微修改一下iptables规则就好了,如下
,
Windows同样添加静态路由
如果有什么不理解的,可以参考下面三条链接,
关于通过容器内网ip直接路由到docker容器
https://blog.csdn.net/langchao7946/article/details/121860817?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_ecpm_v1~rank_v31_ecpm-7-121860817.pc_agg_new_rank&utm_term=docker+%E5%AE%B9%E5%99%A8%E5%86%85%E7%BD%91ip&spm=1000.2123.3001.4430
docker容器通过独立ip暴漏给局域网的方法!!这个博主讲的非常好,简单易懂
https://blog.csdn.net/lvshaorong/article/details/69950694
基于iptables的docker网络隔离通信讲解
如果想要容器正常通信,iptbales是极为重要的,建议看完这篇文章
https://blog.csdn.net/taiyangdao/article/details/88844558?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.highlightwordscore
总结
- 创建自定义网络
- 开启容器,绑定创建的自定义网络
- 做路由转发
- Iptables策略
导入的容器靶机如何添加另一块网卡
我们在导入靶机容器之后,它是自动开启的,网卡也是自动分配好的,所以我们在给靶机添加一块网卡就行了,命令如下
docker network connect docker=br0 (网卡名字) CVE-2021-XXXX(容器名字)
这样我们的容器靶机就有两块网卡了,攻击机只要添加一条路由策略即可访问容器靶机
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/71048.html