Docker(七)之网络基础配置

简介

  • Docker提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务;

目的

  • 学习使用端口映射机制来将容器内应用服务提供给外部网络;
  • 通过容器互联,让多个容器(同一宿主主机)之间进行快捷的网络通信;

端口映射实现访问容器

从外部访问容器应用

  • 若在启动容器的时候,不指定对应参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的;
  • 当容器中运行一些网络应用,需要外部访问这些应用时,可以通过-P-p参数来映射端口;
  • 当使用-P参数时,Docker会随机映射一个宿主主机未占用的端口至容器内部开放的网络端口;
1
2
3
4
5
6
7
8
9
10
11
# 下载nginx镜像
$ docker pull nginx

# 创建一个新容器
$ docker run -d -P nginx

# 查看正在运行容器
$ docker ps

# 查看应用的信息
$ docker logs -f NAME
  • 当使用-p参数时,可以指定要映射的端口,并且在一个指定端口上只可绑定一个正在运行的容器;
1
2
# 创建一个新容器
$ docker run -d -p 80:80 nginx
  • 支持的格式:
    • IP:Host-Port:Container-Port
    • IP::Container-Port
    • Host-Port:Container-Port

映射所有接口地址

  • 使用多个-p参数,映射多个本地端口到容器的端口;
1
$ docker run -d -p 80:80 -p 443:443 nginx

映射到指定地址的指定端口

  • 使用IP:Host-Port:Container-Port格式,映射到指定地址,适用于多个网络接口;
1
$ docker run  -d -p 127.0.0.1:80:80 nginx

容器互联实现容器间通信

  • 容器的连接系统是除端口映射外另一种可以与容器中服务进行交互的方式,互联的容器之间通过特有的隧道实现通信;

自定义容器命名

  • 连接系统依据容器的名称来执行,因此,首先需要自定义一个容器命名;
  • 在创建容器时,默认会随机分配一个名字,但强烈建议自定义命名,便于管理;
  • 使用--name参数可以为容器自定义命名
1
$ docker run -d -p 80:80 --name nginx nginx

容器互联

  • 使用--link参数可以让容器之间安全的进行交互;

  • 创建一个新的MySQL数据库容器

1
$ docker run -d --name db mysql
  • 创建一个新的Web容器并连接到db容器
1
$ docker run -d -P --name web --link db:db nginx
  • --link参数的格式:--link name:alias,其中name为要连接容器的名称,alias为这个连接的别名;
  • 允许使用多个--link参数来连接多个容器;

有你就有世界,感谢有你,昕!
0%