赞
踩
转自:https://www.cnblogs.com/kevingrace/p/9453987.html
Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务。
容器启动之后,容器中可以运行一些网络应用,通过-p或-P参数来指定端口映射。
注意:
宿主机的一个端口只能映射到容器内部的某一个端口上,比如:8080->80之后,就不能8080->81
容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8090->80,8099->80
1)启动容器时,选择一个端口映射到容器内部开放端口上
-p 小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。
-P 大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
2)启动创建时,绑定外部的ip和端口(宿主机ip是192.168.10.214)
1 2 3 4 5 6 7 8 9 10 11 12 |
|
3)容器启动时可以指定通信协议,比如tcp、udp
1 2 3 4 5 6 7 8 |
|
4)查看容器绑定和映射的端口及Ip地址
1 2 3 4 5 6 |
|
5)容器启动绑定多IP和端口(跟多个-p)
1 2 3 4 5 |
|
6)容器除了在启动时添加端口映射关系,还可以通过宿主机的iptables进行nat转发,将宿主机的端口映射到容器的内部端口上,这种方式适用于容器启动时没有指定端口映射的情况!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
|
一次性删除所有容器,包括正在运行的容器
1 2 3 4 5 6 7 8 9 10 11 |
|
如果启动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.
解决办法
1 2 3 4 |
|
============问题: Docker 端口映射到宿主机后, 外部无法访问对应宿主机端口==============
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
标签: docker
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。