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

◆◆0
发表评论