docker的网络基础配置

一、端口映射实现访问容器

  当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数来指定端口映射。当使用-P标记时,Docker会随机映射一个49000~49900的端口至容器内部开放的网络端口。

   1、-P随机分配端口

  # docker pull training/webapp  下载镜像文件

  # sudo docker run -d -P training/webapp python app.py  运行镜像文件

  # docker ps  查看docker运行进程

  # docker logs -f laughing_montalcini  查看日志文件(docker logs -f -t --tail 行数 容器名)

  2、-p指定端口

  # docker run -d -p 5000:5000 training/webapp python app.py 

  # docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py  指定ip地址的指定地址

  # docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py  指定ip地址的任意地址

  # docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py  指定协议

  3、查看端口绑定地址:# docker port laughing_montalcini 5000  (docker port 容器名 容器内端口)

  使用docker inspect 容器id 可以查看容器的所有信息

二、容器之间的通信

  以数据库和程序的连接为例 

  # docker pull training/postgres

  # docker run -d --name db training/postgres

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

  Docker在两个互联的容器之间创建了一个安全隧道,而且不用映射它们的端口到宿主主机上。在启动db容器的时候并没有使用-p和-P标记,从而避免了暴露数据库端口到外部网络上。

  # docker run --rm --name web- --link db:db training/webapp env  使用env命令来查看web容器的环境变量

  # docker run -t -i --rm --link db:db training/webapp /bin/bash  Docker还添加host信息到父容器的/etc/hosts的文件。下面是父容器web的hosts文件

  # cat /etc/hosts  这里有两个hosts信息,第一个是web容器,web容器用自己的id作为默认主机名,第二个是db容器的ip和主机名。

  # apt-get install -yqq inetutils-ping  在web容器中安装ping命令来测试跟db容器的连通

  # ping adb

原文地址:https://www.cnblogs.com/wu-wu/p/10250761.html