docker 容器的网络配置

   Docker 中的网络功能介绍linux

默认状况下,容器能够创建到外部网络的链接,可是外部网络没法链接到容器。web

Docker 容许经过外部访问容器或容器互联的方式来提供网络服务docker

外部访问容器:shell

容器中能够运行一些网络应用,要让外部也能够访问这些应用,能够经过  -P  或  -p  参数来指定端口映射。网络

练习环境:运行一个容器,提供web服务和ssh服务ssh

宿主机启用路由转发(net.ipv4.ip_forward=1)ide



wKiom1jKqPTgGyzWAAAnX8XNGyo406.png

准备工做 安装docker 工具

 

wKioL1jKqPSQ0kueAAAIjjTlnoI287.png

安装目录下的全部rpm包 (rpm包是提早下载好的,也能够链接网络上的公共YUM仓库)spa


wKiom1jKqPTB8jiGAAAG61-6BeM742.png

解压已经作好的镜像3d



wKioL1jKqPWyy847AAAUAtVLrMQ446.png

查看解压完成的镜像是否正确


wKioL1jKqPXAKrapAAAfZU6MJTk111.png

 P(大写)标记时,Docker 会随机映射一个随机的端口到内部容器开放的网络端口。

注:-P使用时须要指定--expose选项或dockerfile中用expose指令容器要暴露的端口,指定须要对外提供服务的端口

使用  docker ps  能够看到,本地主机的32770被映射到了容器的22端口,本地主机的32769被映射到了容器的80端口,本地主机的32768被映射到了容器的443 端口。

 


wKiom1jKqPWhWD8OAAAYjNefj3o004.png

验证是隐射到了端口号32770上 采用ssh远程登陆的方式验证


wKiom1jKqPbRazWKAAEH6eubXN8994.png

验证经过32769是否能够访问容器的 web



wKioL1jKqPfh5VubAABXdaR6RPQ027.png

docker -p(小写)能够指定所要映射的端口号


wKioL1jKqPfBia6tAAAmsNZugKA550.png




wKiom1jKqPjyQUcCAABZxJ2SQLA356.png

经过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 指定,默认设置。


wKiom1jKqPnig0sWAAAOVwhQ7YA849.png

host 模式

若是启动容器的时候使用 host 模式,那么这个容器将不会得到一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出本身的网卡,配置本身的 IP 等,而是使用宿主机的 IP 和端口。


wKioL1jKqPmgJigsAAASH017gGE374.png


wKiom1jKqPnzaMvWAAAJDCfFd_k282.png

防火墙开启80端口


wKioL1jKqPrgfcRpAAF2nJNXIOY257.png

dockerhost模式是和宿主机公用一个IP地址 因此访问是直接访问宿主机IP地址就等于访问docker 容器的web服务了

 

 

container 模式

这个模式指定新建立的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新建立的容器不会建立本身的网卡,配置本身的 IP,而是和一个指定的容器共享 IP、端口范围等。一样,两个容器除了网络方面,其余的如文件系统、进程列表等仍是隔离的。两个容器的进程能够经过 lo 网卡设备通讯。 


wKiom1jKqPqAq2EkAAAsEPSmFKg140.png

wKioL1jKqPuRbSn5AAAwalP9sKU360.png

引用刚才建立的容器发现容器的 ip地址和开始建立的同样

相关文章
相关标签/搜索