Dcoker网络

linux内核的六种名称空间:

UTS,User,Mount,IPC,Pid,Net

Docker的四种网络模型:

1.bridge模式

bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将并将一个主机上的Docker容器连接到一个虚拟网桥上。Docker 在启动时会创建一个虚拟网桥 docker0,默认地址为 172.17.0.1/16, 容器启动后都会被桥接到 docker0 上,并自动分配到一个 IP 地址。

2.host模式

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

3.none模式

在none模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

使用–net =none模式启动容器:

4.container模式

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。

使用–net =container模式启动容器:

docker网卡管理命令:

Usage:	docker network COMMAND
Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

将docker容器网络暴露出来的几种方式:

docker container run --network=bridge -p 
-p选项的使用格式:
    -p <containerPort>
        将制定的容器端口应设置主机所有ip地址的一个动态端口
        例:docker container run --name nginx1 --network brige -p 80 nginx:latest
    -p <hostPort>:<containerPort>
        将容器端口<containerPort>映射至指定的主机端口<hostPort>
        例:
        将容器的80端口映射到主机的所有ip地址的80端口上
        docker container run --name nginx1 --network brige -p 80:80 nginx:latest
    -p <ip>:<containerPort>
       将指定的容器端口<containerPort>映射至主机指定<IP>的动态端口
       例:
        将容器的80端口映射到主机的192.168.3.191的动态端口上
        docker container run --name nginx1 --network brige -p 192.168.3.191::80 nginx:latest
    -p <ip>:<hostPort>:<containerPort>
       将指定的容器端口<containerPort>映射至主机指定<ip>的端口<hostPort>
       例:
        将容器的80端口映射到主机的192.168.3.191的80端口上
        docker container run --name nginx1 --network brige -p 192.168.3.191:80:80 nginx:latest
   动态端口指随机端口,具体的映射结果可使用docker port命令查看
   
-P选项或--publish-all选项 将容器的所有计划要暴露端口全部映射至主机端口
计划要暴露的端口使用--expose选项指定
如果不想使用默认的docker0桥接扣,或者需要修改此桥接口的网络属性,可通过为docker daemon 命令使用-b、--bip、--fixed-cidr、--default-gateway、--dns以及--mtu等选项进行设定

docker container run --network container

  可以通过直接共享宿主机的网络的方式进行暴露】
  例:
   docker container run --name xxx --network host -it --rm busybox

image

星霜荏苒 居诸不息