docker跟宿主机交互的是通过原生网络实现的。当Docker进程启动之后,它会配置一个虚拟的网桥叫docker0在宿主机上。这个接口允许Docker去分配虚拟的子网给即将启动的容器们。这个网桥在容器内的网络和宿主机网络之间将作为接口的主节点。Docker容器启动后,将创建一个新的虚拟接口并分配一个网桥子网内的IP地址。这个IP地址嵌在容器内网络中,用于提供容器网络到宿主机docker0网桥上的一个通道。Docker自动配置iptables规则来放行并配置NAT,连通宿主机上的docker0,就可以访问宿主机的mysql数据文件了。
创建一个安全的Docker基镜像的方法
** 构建一个Java环境基镜像 **
正如我刚解释的,Alpine Linux是一个构建自有镜像时不错的选择,因此,我们在此将使用它来构建简洁高效的Docker镜像,我们开始吧!
组合:Alpine + bash
每个Dockerfile第一个指令都是指定它的父级容器,通常是用于继承,在我们的例子中是alpine:latest
:
sh
FROM alpine:latest
MAINTAINER cSphere
RUN apk add --no-cache --update-cache bash
CMD ["/bin/bash"]
```
好了,现在我们构建容器:
sh
$ docker build -t my-java-base-image >
---> Running in 63433312d77e
---> bfe94713797a
Removing intermediate container 63433312d77e
... 省略若干行
Step 4 : CMD /bin/bash
---> Running in d2291684b797
---> ecc443d68f27
Removing intermediate container d2291684b797
Successfully built ecc443d68f27
并且运行它:
sh
$ docker run --rm -ti my-java-base-image
bash-4.3#
成功了!我们有了一个运行着bash的Alpine Linux。