docker网络模式

查看当前网络

[root@docker ~]# docker network list
NETWORK ID     NAME           DRIVER    SCOPE
89c12c0570e3   bridge         bridge    local
7aa72f2e6c2a   host           host      local
271f52604302   none           null      local
c4e4b2c40ab2   test_default   bridge    local
[root@docker ~]# docker network ls
NETWORK ID     NAME           DRIVER    SCOPE
89c12c0570e3   bridge         bridge    local
7aa72f2e6c2a   host           host      local
271f52604302   none           null      local
c4e4b2c40ab2   test_default   bridge    local

docker安装后,默认会创建三种网络类型,bridge、host和none以及自定义网络模式

1.bridge网络桥接

  • 这是 Docker 默认采用的网络模式。docker容器重启时会按照顺序获取对应ip地址。
  • 在这种模式下,Docker 容器连接到一个虚拟网桥上,通过该网桥与宿主机进行通信。
  • 容器之间可以相互通信,而且宿主机也可以通过端口映射与容器通信。

2.none 无指定网络

(1)该模式关闭了容器的网络功能
(2)使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等
(3)这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过

--network=none

来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性,可以安全的储存数据,不会被攻击,可以用来当个仓库,数据备份时。
 

3.主机网络

host容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口范围

使用host模式的容器可以直接使用宿主机的Ip地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好

  • 解决了ip地址不固定的情况

docker网络模式_第1张图片

使用host网络创建容器

[root@docker ~]# docker run -it --name testnginx2 --net host 98ebf73ab
[root@docker ~]# netstat -lntp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      3237/docker-proxy

浏览器访问宿主ip地址

4.固定ip

创建自定义网络类型,并且指定网段

[root@docker ~]# docker network  create --subnet=192.168.0.0/16 hua
d024b6ca219b453d3d9ef659643975d3d9820299990b4fa48a778588f3ce0101

查看网络类型,多了自定义的
[root@docker ~]# docker network list
NETWORK ID     NAME           DRIVER    SCOPE
89c12c0570e3   bridge         bridge    local
7aa72f2e6c2a   host           host      local
d024b6ca219b   hua            bridge    local
271f52604302   none           null      local
c4e4b2c40ab2   test_default   bridge    local

格式 network create --subnet=网段 + 网络类型名字

使用新的网络类型创建并启动容器

创建容器时可以指定IP,创出来的ip也在这个网段内的ip

语法:docker run -itd  --net 网络类型名 + 镜像

[root@docker ~]# docker run -itd --net hua  --ip 192.168.66.66  nginx
6f54688334f1a8da16645020164dac5e2d8bbee198b5f4e1c4478018e3bb09f8

查看容器!
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED         STATUS         PORTS     NAMES
6f54688334f1   nginx     "/docker-entrypoint.…"   8 seconds ago   Up 7 seconds   80/tcp    sharp_chatelet

查看容器ip!
[root@docker ~]# docker inspect 6f | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "192.168.66.66",

关闭容器并重启,发现容器ip并未发生改变

你可能感兴趣的:(docker,java,容器,docker网络)