Docker 网络
约 541 个字 11 行代码 4 张图片 预计阅读时间 2 分钟
Warning
以下操作均在 root 用户下进行,否则请带上 sudo
,或者是把用户加到 docker 用户组内。
Info
下面说的标识符,包括名称或 ID 的一部分;一般来说,名称可以和标识符互用,但建议使用名称。
nicolaka/netshoot
- 方便查看网络信息的镜像
里面集成了多种网络工具,方便本章的演示。
文档:
- nicolaka/netshoot: a Docker + Kubernetes network trouble-shooting swiss-army container
- nicolaka/netshoot - Docker Image | Docker Hub
Docker 网络能够解决的问题
不同容器间通信。
当然,也可以向宿主机暴露端口来实现,但是这样不优雅,同时会占用、暴露宿主机端口,不安全。
容器内访问宿主机
- 通过宿主机的 IP 地址访问(不推荐;只能在宿主机查询,不同主机的情况可能不一样)。
- 宿主机内有
docker0
网络,其地址可以被容器访问(只能在宿主机查询,不同主机的情况可能不一样)。 - 在新建容器时,添加以下选项:
一般来说会设置为:即可在容器内通过设置的主机名(如
host.docker.internal
)访问宿主机
docker run
的 --add-host
选项
实质是把下面的条目写进容器的 /etc/hosts
中:
容器内访问不了的 IP,仍然访问不了;前例为特殊情况。
Docker 网络操作
添加
网络类型:bridge
(默认)、overlay
(用于 Swarm mode,暂不用考虑)
查看
删除
可批量;删之前确保没有容器在该网络中。
Docker 容器连接到网络
新建容器时,添加如下选项:
之后,容器可以通过配置的名称访问同属于这个网络下的容器。
如果容器已经运行,可以执行:
使用别名
在同一个网络中,为其他容器取别名,可在新建容器时使用以下选项:
这样,在容器中,既可使用容器名访问其他容器,也可使用别名访问。
Docker 容器断开网络
-f
:强制