四、网络基础配置
7.1、端口映射实现访问容器
参数:
-P:容器将一个随机端口映射到容器的5000端口
-p:将宿主机指定接口的指定端口映射到容器5000端口,格式有:ip:hostPort:containerPort(指定接口指定端口),ip::containerPort(映射指定地址任意端口),hostPort:containerPort(映射任意接口指定端口)
映射所有接口时,只需要提供hostPort:containerPort即可,如:docker run -d -p 5000:5000 webapp python app.py
多次使用-p参数可以同时映射多个端口
可以用udp标记指定udp端口,如:docker run -d -p 127.0.0.1:5000:5000/udp webapp python app.py
查看端口映射关系:
- docker ps -a能看到所有的
- docker port [container ID | container name]
7.2、容器互联实现容器间通信
容器间互联:
用--name参数自定义容器名,记得名称唯一,因为我们要靠它来连接啦,当然如果乐意记一串随机数也未尝不可。
两个容器之间的链接靠--link参数来实现,--link name:alias,其中name是被链接容器名称,alias是该链接的别名
docker run -d -P --name web --link db:web_db training/webapp python app.py
可以用docker inspect 0a9b753d78ea
docker通过两种方式为容器公开链接信息
- 环境变量
- 更新/etc/hosts文件
查看web服务器的环境变量:
docker run -P --rm --name web --link db:web_db training/webapp env
其中WEB_DB_开头的是web容器链接db容器使用的,采用链接别名的大写模式。
查看容器更新的hosts文件
docker run -it -P --rm --name web --link db:web_db training/webapp /bin/bash
在web容器中是可以ping通db容器的,注意这里db容器有多个name,都是可以ping通的