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网络的主要内容,如果未能解决你的问题,请参考以下文章