Docker允许通过外部访问容器互联的方式来提供网络服务。
-P 标记
使用-P标记,docker会随机映射49000~49900中的任意一个端口到内部容器开放的网络端口
docker run -dP docker.io/training/webapp python app.py
使用docker ps -l查看,可以看到本地主机的32772被映射到了容器的5000端口
-p(小写)标记
-p可以指定要映射的端口,并且在一个指定端口上只可以绑定一个容器。
docker run -d -p 4000:5000 docker.io/training/webapp python app.py
可以看到本地主机的4000被映射到了容器的5000端口。
映射指定地址的任意端口
docker run -d -p 127.0.0.1:5000:5000 docker.io/training/webapp python app.py
查看映射端口配置
docker port [Container_id]
PS:
1、容器有自己的内容不网络和ip地址,可以使用docker inspect获取所有的信息,docker还可以有一个可变的网络配置;
2、-p标记可以使用多次来绑定多个端口
容器互联
1、使用–link参数可以让容器之间安全的进行交互。
–link的格式为:–link name:alias,其中name是要链接的容器名称,alias是这个链接的别名
docker run -d --name db docker.io/training/postgres
docker run -d -P --name web --link db:db docker.io/training/webapp
2、使用env命令查看web容器的环境变量
docker run --rm --name web2 --link db:db docker.io/training/webapp env
3、查看父容器的hosts文件
docker run -ti --rm --link db:db docker.io/training/webapp /bin/bash
用ping来测试db容器,会解析为172.17.0.2。