作者:刘海峰,IT行业资深码农,从事.net/java/go语言开发十余年,长期关注springcloud/k8s/linux网络相关的技术,现为滴普科技容器产品首席架构师。
前言
在这篇文章我们将完成以下几件事情:
- 用docker模拟一个POD
- 将这个POD和主机连接起来,在主机中能访问POD的网站
- 让这个POD能上外网
模拟一个POD
POD是一个K8S的逻辑概念,POD里会有一个或多个容器,他们之间共享一个网络命名空间,可以用localhost相互访问,下面我们将脱离开K8S,直接用docker来模拟这种情况:
首先创建一个network=none的容器:
docker run -itd --name=pause --net=none busybox
这时候pause容器会新建一个网络命名空间,但不会加入docker0网桥中,我们用下面的命令来查看:
[root@worker3 ~]# docker inspect pause|grep SandboxKey
"SandboxKey": "/var/run/docker/netns/326720316d64",
我们再运行一个nginx容器,加入上面的pause容器的网络命名空间,命令如下:
docker run --name