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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理