7.端口映射与容器关联
端口映射实现容器访问
从外部访问容器应用
启动容器时,若不指定对应参数,在容器外部将无法通过网络访问容器内的网络应用和服务。
这就需要使用-P
、-p
参数来指定端口映射。-P
(大写),是将随机映射一个宿主机49000~49900的端口到内部容器开放的网络端口。-p 宿主机端口:容器端口
(小写的)则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。
映射所有接口地址
docker run -it -d -p 50001:50001 --name test ubuntu:latest /bin/bash
映射到指定地址的指定端口
docker run -it -d -p 127.0.0.1:50001:50001 --name test ubuntu:latest /bin/bash
映射到指定地址的任意端口
docker run -it -d -p 127.0.0.1::50001 --name test ubuntu:latest /bin/bash
这样就会将localhost的任意端口到容器的5000端口,本地主机会自动分配一个端口。
查看映射端口配置
docker port 容器 容器端口
查看容器指定端口的映射关系。
互联机制实现便捷互访
容器的互联是让容器中的应用进行较快交互的方式,实现互联后可以ping通。
创建一个数据库容器
1
docker run -it -d --name db mysql /bin/bash
创建一个web容器来连接到db容器
1
docker run -it -d -P --name web --link db:db ubuntu /bin/bash
通过–link参数(–link 容器名:别名),这样就实现了web容器与db容器的互联。
两种方式为容器公开连接信息
- 更新环境变量
- 更新/etc/hosts文件
查看web容器的环境变量
1
docker run --rm --name web2 --link db:db ubuntu env
查看hosts信息
1 | docker exec -it web /bin/bash |
172.17.0.2为db容器IP,172.17.0.3为web容器IP。