Loading
0

docker网络技术剖析

Docker 中的网络功能介绍
docker容器访问外网,
外网访问docker容器,
docker容器间互访,
编译包制作成rpm包,
docker容器分割VLAN通信,
实验环境:未开启selinux
防伪码: 青春以梦为马
默认情况下,容器可以建立到外部网络的连接,但是外部网络无法连接到容器。
Docker 允许通过外部访问容器或容器互联的方式来提供网络服务
外部访问容器:
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过  -P  或  -p  参数来指定端口映射。
练习环境:运行一个容器,提供web服务和ssh服务
宿主机启用路由转发(net.ipv4.ip_forward=1)
通过docker  commit或dockerfile生成一个web应用的镜像,这里我通过dockerdockerfile构建镜像模板
1)创建一个sshd_dockerfile工作目录

编辑run.sh文件

在主机上生成ssh秘钥对,并创建authorized_keys文件



在sshd_dockerfile目录下,使用docker  build命令来创建镜像,注意:在最后还有一个”.”,表示使用当前目录中的dockerfile

执行docker images查看新生成的镜像

当使用–P(大写)标记时,Docker 会随机映射一个随机的端口到内部容器开放的网络端口。
注:-P使用时需要指定--expose选项或dockerfile中用expose指令容器要暴露的端口,指定需要对外提供服务的端口
使用  docker ps  可以看到,本地主机的32770被映射到了容器的22端口,本地主机的32769被映射到了容器的80端口,本地主机的32768被映射到了容器的443 端口。

此时访问本机的 32770端口即可访问容器内 ssh 应用。

注:192.168.110.128是宿主机的地址
查看容器运行的httpd进程

此时访问本机的 32769端口即可访问容器内 web 应用

-p(小写)则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持的格式有ip:hostPort:containerPort | ip::containerPort |hostPort:containerPort
注意:
容器有自己的内部网络和 ip 地址(使用  docker inspect  可以获取所有的变量。)
-p 标记可以多次使用来绑定多个端口
 
映射所有接口地址:
使用 hostPort:containerPort 格式,将本地的10111端口映射到容器的 22 端口,本地的801端口映射到容器的80端口可以执行

测试访问:

测试web

映射到指定地址的指定端口
可以使用 ip:hostPort:containerPort 格式,指定映射使用一个特定地址,比如宿主机网卡配置的一个地址192.168.110.128

分页阅读: 1 2 3 4 5 6 7 8
【声明】:8090安全小组门户(https://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。