Docker端口映射【-P、-p】
1、网络管理
1.1、基础知识
1.1.1、Docker 网络实现方式
1、端口映射 - 将容器内服务端口与宿主机端口关联在一起,通过"宿主机ip:宿主机port"达到访问容器服务效果
2、网络模式 - 借助于独立的docker网卡功能实现访问容器服务的效果
1.1.2、命令格式
docker -P|p [镜像名称]
1.1.3、-P、-p参数解析
-P(大写) 指的是容器应用PORT随机映射到宿主机上的PORT 自动绑定所有对外提供服务的容器端口,映射的端口将会从没有使用的端口池中自动随机选择,但是如果连续启动多个容器的话,则下一个容器的端口默认是当前容器占用端口号+1 生产场景一般不使用随机映射,好处是由docker分配,宿主机端口不会冲突
-p(小写) 宿主机IP:宿主机PORT:容器PORT 宿主机IP不写表示"0.0.0.0",宿主机PORT不写表示随机端口,容器PORT必须指定,可以同时对多个端口进行映射绑定 指定端口映射,在标准化场景下使用频率高,
2、随机端口映射、指定端口映射实践
2.1、随机端口映射
2.1.1、启动容器
docker run --rm -d -P nginx
2.1.2、查看端口映射
]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bc5031ca1c0c nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:32768->80/tcp, :::32768->80/tcp naughty_haslett
2.1.3、访问测试
2.2、指定端口映射
2.2.1、启动容器
# 固定端口 docker run --rm -d -p 192.168.10.19:8080:80 nginx docker run --rm -d -p :8081:80 nginx # 宿主机随机端口 docker run --rm -d -p 192.168.10.19::80 nginx docker run --rm -d -p ::80 nginx
2.2.2、查看端口映射
]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8265659f96c2 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:8081->80/tcp, :::8081->80/tcp eager_nobel 89d94e902ea1 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:32769->80/tcp, :::32769->80/tcp amazing_banach 87334308e589 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 192.168.10.19:32768->80/tcp sleepy_merkle 6dbcb5d8bef4 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 192.168.10.19:8080->80/tcp hopeful_chatterjee
2.2.3、访问测试
2.3、多端口映射
2.3.1、启动容器命令
docker run --rm -d -p 8080:80 -p 8443:443 --name nginx-mul-port nginx