Docker的四种网络模式和相关网络命令等操作

Posted IHBOS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 db255ac0f50d

在这里插入图片描述

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

以上是关于Docker的四种网络模式和相关网络命令等操作的主要内容,如果未能解决你的问题,请参考以下文章

docker 的四种网络模式

docker的四种网络模式

Docker的四种网络模式

浅谈docker的四种网络模式与数据管理

浅谈docker的四种网络模式与数据管理

浅谈docker的四种网络模式与数据管理