FSA全栈行动 FSA全栈行动
首页
  • 移动端文章

    • Android
    • iOS
    • Flutter
  • 学习笔记

    • 《Kotlin快速入门进阶》笔记
    • 《Flutter从入门到实战》笔记
    • 《Flutter复习》笔记
前端
后端
  • 学习笔记

    • 《深入浅出设计模式Java版》笔记
  • 逆向
  • 分类
  • 标签
  • 归档
  • LinXunFeng
  • GitLqr

公众号:FSA全栈行动

记录学习过程中的知识
首页
  • 移动端文章

    • Android
    • iOS
    • Flutter
  • 学习笔记

    • 《Kotlin快速入门进阶》笔记
    • 《Flutter从入门到实战》笔记
    • 《Flutter复习》笔记
前端
后端
  • 学习笔记

    • 《深入浅出设计模式Java版》笔记
  • 逆向
  • 分类
  • 标签
  • 归档
  • LinXunFeng
  • GitLqr
  • Linux音视频

  • Docker

    • Docker - 安装、加速和基本使用
    • Docker - 操作镜像资源
    • Docker - 操作容器
    • Docker - 私有仓库Registry
    • Docker - 数据管理
    • Docker - 网络管理
      • 随机端口映射
      • 指定端口映射
      • 多端口映射
      • 共享网络
    • Docker - Dockerfile的使用
    • Docker - Compose的使用
  • Python环境

  • Python爬虫

  • 后端
  • Docker
LinXunFeng
2021-01-31
目录

Docker - 网络管理

欢迎关注微信公众号:[FSA全栈行动 👋]

默认情况下,容器和宿主机之间网络是隔离的

现在启动了一个 nginx 容器 如图所示 nginx 使用了 80 端口,但是我们去浏览器里访问 localhost:80 是无法访问到 nginx 服务的 这个时候可以通过端口映射的方式,将容器中的端口,映射到宿主机的某个端口上,从而使我们能够通过宿主机的 ip+端口 的方式来访问容器里的内容

# 随机端口映射

-P :自动绑定所有对外提供服务的容器端口,映射的端口会从没有使用的端口池中自动随机选择,如果连续启动多个容器的话,则下一个容器的端口默认是当前容器的端口号+1

命令

docker run -d -P [镜像名称]

在刚才的命令基本上加 -P

docker run -dit -P --name lxfnginx nginx

这样宿主机的 55000 端口就映射到了窗口的 80 端口,访问也是成功的。

# 指定端口映射

命令

docker run -d -p [宿主机ip]:[宿主机端口]:[容器端口] --name [容器名称] [镜像名称]

将宿主机上的 8000 端口映射到 nginx 容器的 80 端口

docker run -dit -p 8000:80 --name lxfnginx nginx

再去访问 localhost:8000 时也是可以正常访问到的

0.0.0.0 表示地址全匹配,即 127.0.0.1 或者宿主机的局域网IP 192.168.1.x 这种都可以访问到 nginx 服务,如果我们想指定绑定的 IP ,可以在映射端口前加上 IP 即可

docker run -dit -p 192.168.1.234:8000:80 --name lxfnginx nginx

虽然图中显示的是 127.0.0.1:55000->80 ,但是经过测试

  • 192.168.1.234:8000 是可以正常访问
  • 127.0.0.1:55000 和 127.0.0.1:8000 无法访问

# 多端口映射

命令

docker run -d -p [宿主机端口1]:[容器端口1]  -p [宿主机端口2]:[容器端口2] --name [容器名称] [镜像名称] 

如下命令所示

docker run -d -p 7000:443 -p 8000:80 --name lxfnginx nginx

# 共享网络

共享网络: 容器与宿主机共享网络信息

默认情况下,容器的网络信息与宿主机是相互独立的,这样会有什么问题呢?

假如运行一个提供了 django 服务的容器,宿主机本地提供了 MySql 服务,此时容器想访问宿主机的数据库,是无法访问到的,这个时候容器就需要共享宿主机的网络

在启动容器时,加上 --network=host 即可共享网络,命令如下

docker run -dit --network=host lxf_django

这样,容器与宿主机的网络就是共享的状态,此时的容器也就可以访问到宿主机的数据库了

#Docker
Docker - 数据管理
Docker - Dockerfile的使用

← Docker - 数据管理 Docker - Dockerfile的使用→

最近更新
01
Flutter - Xcode16 还原编译速度
04-05
02
AI - 免费的 Cursor 平替方案
03-30
03
Android - 2025年安卓真的闭源了吗
03-28
更多文章>
Theme by Vdoing | Copyright © 2020-2025 FSA全栈行动
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×