端口映射
启动容器时,必须制定对应的参数才能访问容器内的网络应用和服务,使用-p
或者-P
来指定端口映射。使用大写的-P
,Docker会随机映射49000~49900的端口到内部容器的开放端口。
以Zookeeper的容器为例子:
也可以使用-p
指定绑定端口,基本格式是:
HostPort:ContainerPort
:本地端口到容器端口的映射IP::ContainerPort
:绑定IP的任意端口到容器的端口IP:HostPort:ContainerPort
:制定映射使用一个特定地址
可以使用docker port
查看绑定的地址,比如:
docker port zookeeper 5000
互联机制实现互相访问
互联技术是让多个容器中的应用进行快速交互的方式,它会在源容器和目标容器之间建立连接关系,接收容器可以不指定IP情况下,快速访问源容器的内容。
现在常用的做法是,把需要互联的容器加入到同一个docker网络中,实现互相访问。这里借助busybox
镜像进行操作。
docker pull busybox
启动一个终端,执行:
docker network create -d bridge my-net
这相当于在docker
内部建立了一个名字为my-net
的子网。
之后,当前终端执行:
docker run -it --rm --name busybox1 --network my-net busybox sh
创建了一个容器,位于docker的子网my-net
中。同样的,新打开一个终端,执行命令:
docker run -it --rm --name busybox2 --network my-net busybox sh
此时再启动另一个新的终端,查看docker容器的状态:
在busybox中分别ping对方,显示如图:
两者都可以解析出对方的IP,并实现互通,说明网络建立成功