以阿里云服务器为例理解docker端口映射》 容器间的相互访问,有三种实现方式:端口映射外界访问独立容器容器连接Link同一宿主机上,不同容器之间的访问Docker Networking(Docker 1.9之后)不同宿主机上不同容器之间的访问
容器链接
容器连接(link)系统是除了端口映射外,另一种跟容器中应用交互的方式。
其会在源容器(db)与接收容器(web)之间穿件一个隧道,接收容器可以看到源容器指定的信息。
其实一个可以将具体的容器连接到一起来进行通信的抽象层。
容器的命名
Docker的连接系统会根据容器的名称来进行连接。
--name
用来自定义名称
sudo docker run -d --name db training/webapp
可以通过docker ps
和docker 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