Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务。

容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射。

注意:

宿主机的一个端口只能映射到容器内部的某一个端口上,比如:8080->80之后,就不能8080->81

容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8090->80,8099->80

1)启动容器时,选择一个端口映射到容器内部开放端口上

-p  小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。

-P  大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。

2)启动创建时,绑定外部的ip和端口(宿主机ip是192.168.10.214)

3)容器启动时可以指定通信协议,比如tcp、udp

4)查看容器绑定和映射的端口及Ip地址

5)容器启动绑定多IP和端口(跟多个-p)

6)容器除了在启动时添加端口映射关系,还可以通过宿主机的iptables进行nat转发,将宿主机的端口映射到容器的内部端口上,这种方式适用于容器启动时没有指定端口映射的情况!

一次性删除所有容器,包括正在运行的容器

如果启动docker 容器时,有如下报错:

/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint my-nginx (db5a0edac68d1ea7ccaa3a1e0db31ebdf278076ef4851ee4250221af6167f9ac): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8088 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.

解决办法

============问题:  Docker 端口映射到宿主机后, 外部无法访问对应宿主机端口==============