前言
docker
容器处在宿主内部的局域网络之中, 一般来说, 我们直接使用局域网ip
即可访问, 但考虑到容器重启后ip
可能会发生变化, 所以这种直接使用容器的ip
的方案并不稳妥
那如果使用公网ip
, 映射访问的话, 似乎稳定一些, 但是也存在问题, 比如docker
跨服迁移, 那么ip
还得手动修改, 同时公网访问速度上肯定不如内网
所以还得另寻他法
事实上 Docker
官方已经给我们提供了解决办法, 那就是使用Bridge
桥接网络, 这样 我们可以直接使用容器名充当局域网ip
进行容器间相互访问
操作步骤
创建bridge网络
1
docker network create -d bridge 自定义网络名称
创建容器时指定
bridge
网络1
2
3docker run -id --name=first --network 网络名 ubuntu:latest
docker run -id --name=second --network 网络名 ubuntu:latest这样两个容器就处在了同一个桥接网络下, 容器间自动link, 彼此可以相互访问
访问测试
1
2
3
4# 进入第一个容器
docker exec -it first bash
# 使用容器名ping
ping second
其他操作
如果要查看当前已经存在的桥接网络列表
1
docker network ls
优势
除了方便容器间通信外, 结合Nginx
还可以减少服务器端口开放数量, 消除不必要的安全隐患
比如不使用桥接网络时, Nginx
反向代理配置是这样的:
1 | http{ |
使用桥接网络后:
1 | http{ |
无论是移植性和安全性都得到了大大的提升
但是有一点需要注意, nginx
配置文件在nginx
启动成功之前会检测server
节点下的host
地址是否可通, 如果存在无法接通的host
, 则nginx
无法启动,
也就是说我们使用server 容器名:80
这种配置 当我们的docker
容器挂了或者停止运行时, 如果此时重启nginx
则会启动失败, 这一点我们需要提前知晓, 避免到时重启时出了问题摸不着头脑
本文为作者原创 转载时请注明出处 谢谢
微信公众号二维码如下: