可以看到上面我们增加了一个`{{- with .Values.course }}xxx{{- end }}`的一个块,这样的话我们就可以在当前的块里面直接引用`.python`和`.k8s`了,而不需要进行限定了,这是因为该`with`声明将`.`指向了`.Values.course`,在`{{- end }}`后`.`就会复原其之前的作用范围了,我们可以使用模板引擎来渲染上面的模板查看是否符合预期结果。
不过需要注意的是在`with`声明的范围内,此时将无法从父范围访问到其他对象了,比如下面的模板渲染的时候将会报错,因为显然`.Release`根本就不在当前的`.`范围内,当然如果我们最后两行交换下位置就正常了,因为`{{- end }}`之后范围就被重置了:
$ docker run -it--rm--name busybox1 --network my-net busybox sh
```
打开新的终端,再运行一个容器并加入到 my-net 网络
```shell
$ docker run -it--rm--name busybox2 --network my-net busybox sh
```
再打开一个新的终端查看容器信息
```shell
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b47060aca56b busybox "sh" 11 minutes ago Up 11 minutes busybox2
8720575823ec busybox "sh" 16 minutes ago Up 16 minutes busybox1
```
下面通过 ping 来证明 busybox1 容器和 busybox2 容器建立了互联关系。
在 busybox1 容器输入以下命令
```shell
/ # ping busybox2
PING busybox2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms
```
用 ping 来测试连接 busybox2 容器,它会解析成 172.19.0.3。
同理在 busybox2 容器执行 ping busybox1,也会成功连接到。
```shell
/ # ping busybox1
PING busybox1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.064 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.143 ms
```
这样,busybox1 容器和 busybox2 容器建立了互联关系。
如果你有多个容器之间需要互相连接,推荐使用`Docker Compose`。
## Host 模式
如果启动容器的时候使用`host`模式,那么这个容器将不会获得一个独立的`Network Namespace`,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。