docker网络

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker网络相关的知识,希望对你有一定的参考价值。

docker网络:

默认情况下,容器可以建立到外部网络的连接,但是外部网络无法连接到容器。 

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

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

运行一个容器,提供 web服务和ssh服务 

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

通过docker  commit或dockerfile 生成一个web应用的镜像,这里我通过 docker dockerfile

构建镜像模板

1.创建一个sshd_dockerfike文件夹

 技术分享图片

2.创建run.sh文件

 技术分享图片

3.生成ssh秘钥对,并生成authorized_keys

 技术分享图片

4.创建Dockerfile文件

 技术分享图片

5.docker build 生成一个镜像

 技术分享图片

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

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

-p(小写)则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。支持

的格式有ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort 

注意: 

?容器有自己的内部网络和  ip  地址(使用   docker inspect   可以获取所有的变量。) 

?  -p  标记可以多次使用来绑定多个端口

例子:-P选项,docker run -dit -P centos:http

 技术分享图片

例子:ip: hostPort:containerPort

 技术分享图片

例子:ip::containerPort

 技术分享图片

例子:hostPort:containerPort

 技术分享图片



补充:当我们链接内部容器的时候,如果我们做了端口映射,那么我们就需要通过映射完成的端口来访问,例如上面的22端口映射为32770,80端口映射为32769


Docker  网络配置 

Docker  四种网络模式 

docker run 创建 Docker 容器时,可以用 --net 选项指定容器的网络模式,

Docker 有以下 4 种网络模式:  

?  host  模式,使用  --net=host  指定。 

?  container  模式,使用  --net=container:NAMEorID  指定。 

?  none  模式,使用  --net=none  指定。 

?  bridge  模式,使用  --net=bridge  指定,默认设置。



host模式:容器不会虚拟出自己的网卡,配置自己的  IP  等,而是使用宿主机的  IP  和端口。

 技术分享图片



container模式:这个模式指定新创建的容器和已经存在的一个容器共享一个 Network 

Namespace,而不是和宿主机共享。需要先创建一个容器,将容器切换到后台运行:ctrl+p,ctrl+q,根据第一个容器的id来创建第二个容器。

 

技术分享图片


bridge模式:当 docker 启动时,会在主机上创建一个 docker0 的虚拟网卡。他随机挑选 

RFC1918 私有网络中的一段地址给 docker0 。比如 172.17.0.1/16,16 位掩码

的网段可以拥有 65534 个地址可以使用,这对主机和容器来说应该足够了。

 技术分享图片

 技术分享图片

 技术分享图片

修改/etc/sysconfig/docker文件

 技术分享图片

重新启动docker,并新建一个容器,容器已经桥接bridge0


下一章节我们讲解none模式


以上是关于docker网络的主要内容,如果未能解决你的问题,请参考以下文章

docker容器网络

docker的网络模式:none

理解Docker :Docker 网络

理解Docker:Docker 网络

Docker下网络的认识与实验

Docker关于Docker网络隔离与通信详解