docker网络

docker使用思考

docker commit在容器修改配置后,不停止容器进行commit
(参数-p:在commit时,将容器暂停)

执行Dockerfile

docker built -t zabbix:v1 .

挂载

docker run -it -v /benjamin java /bin/bash (卷)
docker run -it -v /data:/benjamin java /bin/bash (目录)

通过共享A容器,生成一个新的容器B并共享容器之间的数据

docker run --privileged=true --volumes-from=A -it java /bin/bash

docker默认是允许container互通,通过-icc=false关闭互通。一旦关闭了互通,只能通过-link name:alias命令连接指定container.
-- link redis:db的别名,会在/etc/hosts中生成对应的ip映射
172.17.0.4 elasticsearch 531f533e3b1a
172.17.0.3 mongo 3f9e33ef7101
172.17.0.5 9eac2b3da785 (graylog自己)
此时可以发现docker-bridge网络内其他docker无法识别hosts,无法通过hosts解析

最简单常用的互联方式:端口映射

直接使用宿主机host网络 --net=host

自定义桥网络的优势:

1.用户定义的桥接器可在容器化应用程序之间提供更好的隔离和互操作性
连接到同一个用户定义的桥接网络的容器会自动将所有端口相互暴露,而不会向外界显示任何端口。这使得容器化应用程序可以轻松地相互通信,而不会意外地打开对外界的访问。
如果在默认桥接网络上运行相同的应用程序堆栈,则需要打开Web端口和数据库端口,并使用 每个的标记-p或--publish标记。这意味着Docker主机需要通过其他方式阻止对数据库端口的访问。

2.用户定义的桥接器在容器之间提供自动DNS解析
默认桥接网络上的容器只能通过IP地址相互访问,除非您使用被认为是过期的的--link选项。在用户定义的桥接网络上,容器可以通过名称或别名相互解析。

3.容器可以在运行中与用户定义的网络连接和分离
在容器的生命周期中,您可以动态地将其与用户定义的网络连接或断开连接。要从默认桥接网络中删除容器,您需要停止容器并使用不同的网络选项重新创建容器。

4.每个用户定义的网络都会创建一个可配置的桥接网络
如果容器使用默认桥接网络,则可以对其进行配置,但所有容器都使用相同的设置
使用创建和配置用户定义的桥接网络docker network create。如果不同的应用程序组具有不同的网络要求,则可以在创建时单独配置每个用户定义的桥接网络。

docker network create my-net
可以指定子网,IP地址范围,网关和其他选项
docker network rm my-net
docker network connect my-net my-nginx
docker network disconnect my-net my-nginx
docker run --network bridge00

HOST网络相当于容器直接使用宿主网卡地址,未新建网络接口

posted @ 2019-12-28 12:53  kylingx  阅读(124)  评论(0编辑  收藏  举报