Docker四种网络模式

一、实现原理

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。

· docker0网络
docker容器的虚拟网关
· loopback :回环网卡、TCP/IP网卡是否生效
· virtual bridge: linux
自身继承了一个虚拟化功能(kvm架构〉,是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
(示例:安装workstation(虚拟化平台)之后,会在网络适配器中会多出VMnet1 VMnet8 VMnet0)
· docker 0:容器的网关,绑定物理网卡,负责做NAT地址转换、端口映射
docker 0本身也是一种容器

二、Docker四种网络模式

Docker网络模式配置说明
host模式–net=host容器和宿主机共享Network namespace。
container模式–net=container:NAME_or_ID容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。
none模式–net=none容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。
bridge模式–net=bridge(默认为该模式)
在这里插入图片描述

三、Docker命令

1、查看网络列表

docker network ls
docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:7 /bin/bash(以上会报错>

在这里插入图片描述

2、自定义网络固定IP

docker network create --subnet=172.18.0.0/16 mynetwork
docker run -itd --name test2 --net mynetwork --ip 172.18.0.100 centos:7 /bin/bash

在这里插入图片描述

在这里插入图片描述

docker inspect 1528e7f885ac 

在这里插入图片描述

3、暴露端口

docker rum -itd -P nginx:latest /bin/bash
docker run -itd -p 80:3333 nginx /bin/bash
-P  大写p是随机分配端口
-p  小写p是指定暴露端口

docker run -itd -P nginx /bin/bash

在这里插入图片描述

4、在宿主机环境执行容器内命令

docker exec -it 容器ID /bin/bash -c 'nginx'

在这里插入图片描述
在这里插入图片描述

5、怎么把宿主机的文件传入到容器内部

1、linux怎么复制
cp原文件路径目标文件路径

docker cp lopt/ abc容器id:/opt/ abc

6、进入容器没有systemctl 命令解决:添加–privileged=true (指定此容器是否为特权容器),使用此参数,则不能用attach示例:

docker run -itd --name test3 --privileged=true centos /sbin/init
/sbin/init内核启动时主动呼叫的第一个进程
docker ps -a

在这里插入图片描述

docker 中有几种网络模式,分别提供哪些功能

Host container none bridge
Host:与宿主机共享网络名称空间/网络协议栈
Container:多个容器之间共享一个network namespaces
None :自闭空间
Bridge:默认模式通过 veth对连接容器与dockerO网桥,网桥分配给容器Ip,同时docker0作为“局域网”内容器的网关,最后和宿主机网卡进行通讯

两个容器如何通信

host:通过docker0网桥通信
container:通过lo0网卡通信

怎么把宿主机的文件传入到容器内部

docker cp lopt/ abc容器id:/opt/ abc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值