提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • 一、Docker 网络模式
  • 1、docker容器的虚拟网关
  • 2、Docker的网络模式
  • 3、Docker自定义网络
  • 二、Docker数据卷
  • 1、数据卷
  • 2、数据卷容器
  • 3、容器互联(使用centos镜像)


一、Docker 网络模式

1、docker容器的虚拟网关

  1. loopback:回环网卡、TCP/IP网卡是否生效
  2. virtual bridge: linux
    自身继承了一个虚拟化功能(kvm架构),是原生架构的一个虚拟化平台,安装了一个虚拟化平台之后就会系统就会自动安装虚拟网卡
    (示例:安装workstation ( 虚拟化平台)之后,会在网络适配器中会多出VMnet1、VMnet8、VMnet0)
  3. docker 0:容器的网关,绑定物理网卡,负责做NAT地址转换、端口映射;docker0本身也是一种容器
  4. veth对:一组虚拟设备,用户连接两个不同的名称空间;宿主机内就是veth

2、Docker的网络模式

1. Host模式:-net=host;容器和宿主机共享Network namespace(网络名称空间/网络协议栈)
2. Container模式:-net=container:NAME or ID;多个容器共享一 个Network namespace 。
3. None模式:-net=none;容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接,配置IP等(自闭空间)
4. Bridge模式:-net=bridge(默认为该模式);默认模式通过Veth对连接容器与docker0网桥,网桥分配给容器IP,同时docker 0作为“局域网”内容器的网关,最后和宿主机网卡进行通讯

以上不需要动手配置,真正需要配置的是自定义网络

3、Docker自定义网络

1. docker network ls ##查看网络列表

docker使用物理机网络 docker直通物理网卡_docker


2. 查看容器IP

docker inspect  镜像id		##查看镜像状态

实例:

docker inspect 8652b9f0cb4c

docker使用物理机网络 docker直通物理网卡_centos_02


docker使用物理机网络 docker直通物理网卡_centos_03


docker使用物理机网络 docker直通物理网卡_bash_04


docker使用物理机网络 docker直通物理网卡_docker_05

docker exec centos ps aux		##使用exec执行命令
docker inspect centos		##这时可以使用指定的名称查看

docker使用物理机网络 docker直通物理网卡_bash_06

docker使用物理机网络 docker直通物理网卡_bash_07

  1. 自定义网络固定IP
docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash
	--network:指定网络类型
	--ip:指定ip地址

下图发现这种方式会报错:只能遵守默认的分配地址方式;无法指定

docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_08


①:先自定义网络模式

docker network create --subnet=172.18.0.0/16 mynetwork		##创建172.18.0.0/16的网段

docker使用物理机网络 docker直通物理网卡_docker_09


②:网络模式内加入指定的ip地址

docker run -itd --name centos-3 --net mynetwork --ip 172.18.0.10 centos:latest /bin/bash
docker inspect centos-3

docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_10


docker使用物理机网络 docker直通物理网卡_docker_11


4. 暴露端口

docker pull nginx
docker run -itd nginx:latest /bin/bash
这时查询虽然有80端口但是无法打开网页

docker使用物理机网络 docker直通物理网卡_docker_12


①:-p:指定端口

docker run -itd -p 444:80 nginx /bin/bash	##暴露出来的端口是444
docker exec ef89e9321985 nginx		##需要把nginx运行起来

docker使用物理机网络 docker直通物理网卡_bash_13


docker使用物理机网络 docker直通物理网卡_docker_14


这时查看页面192.168.35.70:4040已可以访问网页

docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_15


②:-P:随机端口

docker run -itd -P nginx /bin/bash	##指定随机的端口,下图显示模式从49153的位置给容器做地址映射
docker exec 3a8b665269df nginx		##仍需要重新开启

docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_16


docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_17


页面仍然存在

docker使用物理机网络 docker直通物理网卡_centos_18


5. 在宿主机环境执行容器内命令

docker exec -it 容器ID /bin/bash -c 'nginx'
docker exec 容器ID/容器 name 执行的命令
二、Docker数据卷

1、数据卷

数据卷是一个提供容器使用的特殊目录

创建数据卷
docker run -d -v /data1 -v /data2 --name web httpd:centos
挂载主机目录作为数据卷
docker run -d -v /var/www:/data1 --name web-1 httpd:centos

实例:

docker pull centos
docker run -v /var/www:/data1 -v /var/html:/data2 -it --name centos-v4 centos:7 /bin/bash	##宿主机目录/var/www挂载容器中的/data1,/var/html挂载容器中的/data2
cd /data1
touch 1.txt
cd /data2
touch 2.txt
ls /var/www/		##返回宿主机进行查看

docker使用物理机网络 docker直通物理网卡_centos_19

2、数据卷容器

就是一个普通的容器,实现容器间的互联互通

①:数据卷容器
docker run --name web11 -v /data1 -v /data2 -it centos /bin/bash 	##创建data1卷、data2卷
②:新容器挂载数据卷容器web100
docker run -it --volumes-from web11 --name qq centos /bin/bash	 ##允许一个容器,指定卷来源于web11,新的容器名字qq

实例:

容器web11内:

docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_20


新的容器qq:

docker使用物理机网络 docker直通物理网卡_docker使用物理机网络_21

3、容器互联(使用centos镜像)

docker run -itd -P --name webb centos /bin/bash 		##创建并运行容器取名web1,端口号自动映射
docker run -itd -P --name web2 --link webb:webb centos /bin/bash	##创建并运行容器取名web2,链接到web1和其通信
	--link:打通隧道
yum -y install net-tools	##各自下载ifconfig的工具
验证:
进web2容器 ping webb

docker使用物理机网络 docker直通物理网卡_docker_22

webb:

docker使用物理机网络 docker直通物理网卡_docker_23


web2:

docker使用物理机网络 docker直通物理网卡_docker_24