Docker 中的网络功能介绍linux
默认状况下,容器能够创建到外部网络的链接,可是外部网络没法链接到容器。web
Docker 容许经过外部访问容器或容器互联的方式来提供网络服务docker
外部访问容器:shell
容器中能够运行一些网络应用,要让外部也能够访问这些应用,能够经过 -P 或 -p 参数来指定端口映射。网络
练习环境:运行一个容器,提供web服务和ssh服务ssh
宿主机启用路由转发(net.ipv4.ip_forward=1)ide
准备工做 安装docker 工具
安装目录下的全部rpm包 (rpm包是提早下载好的,也能够链接网络上的公共YUM仓库)spa
解压已经作好的镜像3d
查看解压完成的镜像是否正确
–P(大写)标记时,Docker 会随机映射一个随机的端口到内部容器开放的网络端口。
注:-P使用时须要指定--expose选项或dockerfile中用expose指令容器要暴露的端口,指定须要对外提供服务的端口
使用 docker ps 能够看到,本地主机的32770被映射到了容器的22端口,本地主机的32769被映射到了容器的80端口,本地主机的32768被映射到了容器的443 端口。
验证是隐射到了端口号32770上 采用ssh远程登陆的方式验证
验证经过32769是否能够访问容器的 web
docker -p(小写)能够指定所要映射的端口号
经过xshell验证是否能够经过指定端口号访问容器的ssh (xshell是一款很是好用的远程链接工具 链接稳定支持linux绝大多数命令 还能够快速上传本地文件很是方便 本人亲测有效)
Docker 网络配置
Docker 四种网络模式
docker run 建立 Docker 容器时,能够用 --net 选项指定容器的网络模式,Docker 有如下 4 种网络模式:
host 模式,使用 --net=host 指定。
container 模式,使用 --net=container:NAMEorID 指定。
none 模式,使用 --net=none 指定。
bridge 模式,使用 --net=bridge 指定,默认设置。
若是启动容器的时候使用 host 模式,那么这个容器将不会得到一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出本身的网卡,配置本身的 IP 等,而是使用宿主机的 IP 和端口。
防火墙开启80端口
docker 的host模式是和宿主机公用一个IP地址 因此访问是直接访问宿主机IP地址就等于访问docker 容器的web服务了
这个模式指定新建立的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新建立的容器不会建立本身的网卡,配置本身的 IP,而是和一个指定的容器共享 IP、端口范围等。一样,两个容器除了网络方面,其余的如文件系统、进程列表等仍是隔离的。两个容器的进程能够经过 lo 网卡设备通讯。
引用刚才建立的容器发现容器的 ip地址和开始建立的同样