-
概述
- docker network 命令
-
背景
- newwork 是 docker 的一种资源
- 经常会使用
- 需要整理命令
1. 引入
-
概述
- docker run 时, 将容器端口映射到宿主机
-
场景
-
启动 容器 时, 经常会使用命令
- 将容器的某个端口暴露
- 并且映射到 host 的某个端口上
- 这样可以通过 host 的 ip 和 端口, 直接访问
这个可能是我们对 docker 网络最初的认识
-
端口查看
记得用 命令 查看端口是否被占用, 以免出现不必要的麻烦
-
命令
> netstat -utnlp
-
-
命令
# 注意 -p
> docker container run --name some-nginx -p 10000:80 -v website:/usr/share/nginx/html -d nginx -
结果
- 容器启动成功
- host 的 10000 端口, 被映射到容器的 80 端口
- 可以用以下命令 来查看
> docker ps
> docker container port <container>
- 可以用以下命令 来查看
2. docker --link
-
概述
- 不对外暴露端口, 也可以让容器连接
-
场景
- 容器不想在 host 上暴露端口
- 容器希望与其他容器连接
-
准备
- 已经起来了一个容器, 比如之前的 some-nginx
-
命令
# 在 ubuntu 里, 将 some-nginx 映射为了 nginx
> docker container run --name ubuntu --link some-nginx:nginx -it ubuntu /bin/bash -
结果
- 创建容器成功
- 尝试 ping nginx 或者 some-nginx 都能成功
- 如果没有 ping, ref 里有一个链接可以解决
-
其他
-
查看环境变量, 会发现很多 nginx 相关的变量
> env | grep -i 'nginx'
-
查看 hosts, 也会有
> cat /etc/hosts
-
对于这个 --link 原理的猜测
- 向系统写入 环境变量
- 向系统写入 hosts 文件
-
其实, 后面有个 url, 就是这么理解的
- 但是老实说, 我没看明白, 所以我暂时不敢下结论
-
-
问题
-
问题1: 如果两个容器需要互相 link, 怎么办?
- 问题
- 先启动的那个, 肯定没办法 link 后启动的
- 解决
- 生产中, 让不需要找其他服务器的组件先启动
- 尝试在启动后, 加入 link
- 貌似不可行
- 启动后直接修改 hosts 文件
- 通过某种方式推送, 让所有机器认识自己人
- 那 link 的意义, 其实不大
- 通过某种方式推送, 让所有机器认识自己人
- 问题
-
问题2: 容器的 宕机 和 重启, 是否会影响连接
- 这个还没试过
问题3: 是否还有其他方式, 管理 容器间 的网络交互
-
3. docker network 命令
-
ls
-
概述
- 查看网络连接
-
命令
> docker network ls
-
-
inspect
-
概述
- 查看网络连接详情
-
命令
> docker network inspect <network>
-
-
connect
-
概述
- 容器连接网络
-
命令
> docker network connect <network> <container>
-
-
disconnect
-
概述
- 断开网络连接
-
命令
# -f 表示强制
# 成功后可以通过 inspect 查看
> docker network disconnect [-f] <network> <container>
-
-
create
-
概述
- 创建网络
-
命令
# 不能重名
> docker network create <network>
-
-
rm
-
概述
- 删除网络连接
-
命令
> docker network rm <network>
-
-
prune
-
概述
- 删除没有使用的网络连接
- 删除前会有确认
- 删除没有使用的网络连接
-
命令
> docker network prune
-
ps
-
ref
- Docker 容器与容器云
- Docker 经典实例
- Docker 实战
- docker network
- 关于对docker run --link的理解
- Docker的ubuntu镜像安装的容器无ifconfig和ping命令的解决
-
虚拟化
- 服务器虚拟化
- 存储虚拟化
- 网络虚拟化
-
网络虚拟化
- 有想法的话, 可以去学学 ovs/ovn
-
linux 相关的防火墙
- linux 的防护机制
- iptables
- firewalld
- selinux
- cgroup
- 这些东西, 貌似并不好弄
- linux 的防护机制
-
后续
-
docker network 真正的原理
- docker 容器与容器云这本书里有写
- 网络
- 各种 network
- 容器
- sandbox
- endpoint
- 网络
- docker 容器与容器云这本书里有写
-
linux 网桥
- bridge 类型的网络, 都是 linux 网桥
- 有空可以找找资料
- Linux 虚拟网络设备详解之 Bridge 网桥
- 网桥的本质, 是 虚拟交换机
- 这玩意是个大课题, 一句两句搞不定了
- bridge 类型的网络, 都是 linux 网桥
-