引子
一个web服务跑起来必不可少的两大功能模块:业务处理,数据服务,大型的web服务需要的组件更多,这往往需要多个容器,但是我们还需要这些容器之间可以进行网络通信,相互配合。
Dokcer目前只支持宿主机与容器通信,容器与容器之间通信。
宿主机与容器的端口映射
在启动容器的时候,如果不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的。
当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-p或-p参数来制定端口映射。当使用-p标记时,Docker会随机映射一个49000~49900的端口至容器内部开发的网络端口:
#不知道为什么这里我-P后容器并没有映射端口,但是官方上的样例就可以。
第二种方法是给容器制定端口映射关系:
同时映射多个映射关系:
指定地址的端口映射:
映射指定地址的任意一个端口:
容器与容器的端口映射
容器的连接系统是除了端口映射外另一种可以与容器中应用进行交互的方式。它会在源和接收容器之间创建一个隧道,接受容器可以看到容器指定的信息
自定义容器名字
连接系统依据容器的名称来执行。因此,首先需要自定义一个好记的容器名字。
虽然当创建容器的时候,系统默认会分配一个名字,但自定义命名容器有两个好处:
1.自定义命名比较好记,比如一个web应用容器,我们可以给它起名叫web
2.当要连接其他容器时候,可以作为一个有用的参考,比如连接web容器到db容器。
使用–name标记可以为容器自定义命名:
docker run -d -P -name web ubuntu:nodejs
也可以使用docker inspect 来查看容器的名字:
docker inspect -f "{{.Name}}" CONTAINER_ID
使用–link参数可以让容器之间安全的进行交互:
docker run -d -P --name web --link db:db ubuntu:nodejs
–link参数的格式为–link name:alias,其中name是要连接的容器的名称,alias是这个连接的别名。
时间: 2024-11-03 21:30:59