以阿里云服务器为例理解docker端口映射》 容器间的相互访问,有三种实现方式:端口映射外界访问独立容器容器连接Link同一宿主机上,不同容器之间的访问Docker Networking(Docker 1.9之后)不同宿主机上不同容器之间的访问

容器链接

容器连接(link)系统是除了端口映射外,另一种跟容器中应用交互的方式。

其会在源容器(db)与接收容器(web)之间穿件一个隧道,接收容器可以看到源容器指定的信息。

其实一个可以将具体的容器连接到一起来进行通信的抽象层。

容器的命名

Docker的连接系统会根据容器的名称来进行连接。

--name用来自定义名称

sudo docker run -d --name db training/webapp

可以通过docker psdocker inspect命令查看容器名字。

容器的互联

使用--link参数建立互联。

sudo docker run -d -P --name web --link db:db training/webapp2 python app.py

如此便是创建了一个名为web接收容器,并连接到db源容器上。

--link name:alias
# name 要连接的容器名字
# alias 连接后的别名

通过--link参数,Docker在两个容器之间创建了一个安全的隧道,且不用映射他们的端口到宿主主机上。

在前面启动db容器时,并没有使用-p-P参数,从而避免了暴露数据库端口到外部网络上,增加了容器的安全性。

此处:

  • 源容器db无法从外界访问
  • 接收容器web可以从外界访问
  • web可以访问db

Reference

  1. Docker 网络-端口映射、容器链接、Networking
  2. Docker 从入门到实践
  3. Docker容器(container)详解