惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
B
Blog RSS Feed
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
D
Docker
B
Blog
大猫的无限游戏
大猫的无限游戏
V
Vulnerabilities – Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Schneier on Security
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
博客园 - 【当耐特】
IT之家
IT之家
云风的 BLOG
云风的 BLOG
L
Lohrmann on Cybersecurity
V
V2EX
Latest news
Latest news
S
Secure Thoughts
C
Check Point Blog
N
Netflix TechBlog - Medium
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
The Register - Security
The Register - Security
The Cloudflare Blog
博客园_首页
博客园 - 三生石上(FineUI控件)
L
LINUX DO - 最新话题
W
WeLiveSecurity
G
GRAHAM CLULEY
量子位
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
C
Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
GbyAI
GbyAI
A
Arctic Wolf
Attack and Defense Labs
Attack and Defense Labs
博客园 - 叶小钗
SecWiki News
SecWiki News
Vercel News
Vercel News
Engineering at Meta
Engineering at Meta
S
Security @ Cisco Blogs
小众软件
小众软件
N
News and Events Feed by Topic
WordPress大学
WordPress大学

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 批量更改WordPress媒体URL – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月 於Docker安裝sudo之方法 – 山月 于YunoHost网页版后台装pgAdmin4失败之解决方法 – 山月 解决WordPress多站点网络下异域名子站登录失败的问题 – 山月 Linux的SWAP配置建议与方法 – 山月 如何从一个.sql文件中恢复(导入)数据到MySQL数据库 – 山月 橙色的天,金色的鯉魚 – 山月 設置SoftBank光IP地址固定分配時MAC地址報錯之解決方法 – 山月 解决自托管WordPress与Jetpack通信之不畅 – 山月 解决WordPress上传超过100M文件失败的问题——用Cloudflare作为CDN服务时 – 山月 自托管WordPress迁至新服务器时可能遇到的一些问题 – 山月 Jetpack server port value报错之解决方法 – 山月 Nextcloud服务器目录中/data/updater-(12个英数字)文件夹可删除 – 山月 使WP IndieBlocks、Webmention两插件配合工作 – 山月 导致WordPress钩子(hooks)重复调用的一个可能性——插件重复安装 – 山月 为WordPress自定义贴文类型设置默认格式(post format) – 山月 为Micropub客户端所发内容设置默认post type – 山月 让WordPress的自定义post type支持post formats – 山月 在WordPress通过古腾堡块编辑器验证您的Mastodon身份 – 山月 如何将Mastodon上关注的人导入至Friendica – 山月 在WordPress上发Mastodon的一个选项:Shortnotes+Share on Mastodon – 山月 祝WordPress 20周年快乐!(节译) – 山月 更改IndieBlocks札记(note)、喜欢(like)slug之方法 – 山月 改变Friendica域名之方法 – 山月 爲WordPress添上在線Markdown、HTML互轉工具 – 山月 內排散記 – 山月 长毛象(Mastodon)简介:多中心化、细粒度公开、多样时间轴 – 山月 教ChatGPT讲福州话 – 山月 WordPress项目管理插件使用心得 – 山月 汉字词“地震”之前,日语中表达地震的本土词 – 山月 “幸”与“福”的区别 – 山月 Koha 22.05安装教程(于Ubuntu 20.04 LTS) – 山月 《日本外來語辭典》讀書筆記 – 山月 “传毒”——童年游戏回忆一则 – 山月 WordPress多站点网络分布于不同主域名时登录管理后台出现cookie错误的解决方案 – 山月 如何为WordPress多站点设置不同的子目录、子域名,甚至主域名? – 山月 重温《日语的历史》 – 山月 东京教父:关于爱与救赎 – 山月 2021年末,豆瓣更新了它的条款…… – 山月 WordPress报错“Briefly unavailable for scheduled maintenance.”的解决方法 – 山月 日语里的「原形」「辞书形」「终止形」是什么? – 山月 《福州方言大词典》读后感 – 山月 一種美觀的由Hubzilla分享RSS資訊的方法 – 山月 《我们仨》中与《宋诗选注》相关的记载 – 山月 亂彈文忠公宴番仔事 – 山月 一本清代土腔谜语集引发的回忆 – 山月 迎圣火 – 山月 凝滞在方言里的时光 – 山月 站在新庄园门前 – 山月 长星照耀州府 – 山月 虚拟币与赛博矿难 – 山月 记忆、记录与创造 – 山月 几日来写作微信推文的反思 – 山月 对OKR工作管理法的归纳总结 – 山月 同人誌之夢 – 山月 那里人很爱诗词 – 山月 从语言学看两性语言差异 – 山月 南门兜素菜馆 – 山月 闽海痛史 – 山月 东京的西方建筑遗产 – 山月 真实的华人电影 – 山月 记观《只有野兽知道》 – 山月 记早稻田祭 – 山月 《鬼灭之刃》日语札记 – 山月 颱風前夜的仙草凍 – 山月 首篇博文 – 山月 我到底是转厝了 – 山月 CM96暴走记 – 山月 薄暮逐島 – 山月 人与神的共振 – 山月 逐集罔讲罔听 – 山月 以往不谏 – 山月
俾Docker容器中的应用访问宿主机上的数据库服务 – 山月
2024-09-22 · via 山月

在Docker Compose中,默认情况下,服务之间会在一个自定义的网络中通信。因此,容器会通过这个网络进行互相通信,而无法直接访问宿主机的 IP 地址。

这便是为何当服务尝试连接宿主机上的数据库服务器地址(兹以PostgreSQL这一数据库服务以及192.168.1.1:5432这一服务器位址为例)时,会出现连接超时的问题。

为了解决这个问题,可以有几种方案来让Docker容器中的应用访问宿主机上的数据库,而无需使用Docker自己创建的网络。

方案 1: 使用 host.docker.internal

在Docker for Linux中,可以使用host.docker.internal来指向宿主机的IP地址。这是Docker提供的一个内置DNS名称,允许容器访问宿主机的网络资源。可以将数据库的HOST设置为host.docker.internal,这样容器内部会自动解析到宿主机的IP。

  1. 修改 settings.py.env 文件中的数据库配置,将 HOST 设置为 host.docker.internal

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'database',              # 改成自己的
            'USER': 'database',              # 改成自己的
            'PASSWORD': 'your_password',     # 改成自己的
            'HOST': 'host.docker.internal',  # 使用 host.docker.internal 而不是 192.168.1.1
            'PORT': '5432',
        }
    }
    
  2. 运行docker compose命令,尝试把容器架起来;容器会自动解析这个特殊的DNS名称,并连接到宿主机的PostgreSQL服务。

方案 2: 使用 network_mode: "host"

如果不想让Docker为容器创建单独的网络,可以使用network_mode: "host"配置项。这会让容器直接使用宿主机的网络堆栈,而不是通过Docker创建的网络。这意味着容器可以直接访问宿主机的网络接口。

  1. 修改 docker-compose.yml 文件,在 web 服务中添加 network_mode: "host"

    services:
      web:
        (从略)
        network_mode: "host"  # 添加这个选项
        (从略)
        ports:
          - "(所期望的容器外端口):8000"
    
  2. 重新运行docker compose up,此时Docker容器将直接使用宿主机的网络,因此它可以直接访问192.168.1.1:5432上的PostgreSQL。

方案 3: 自定义网络配置,桥接到宿主机网络

如果仍然想使用Docker自定义网络,但让容器能够访问宿主机的网络,可以使用extra_hosts来为容器提供宿主机 IP 的映射。

  1. docker-compose.yml中,使用extra_hosts指定宿主机的IP:

    services:
      web:
        (从略)
        ports:
          - "(所期望的容器外端口):8000"
        extra_hosts:
          - "host.docker.internal:192.168.1.1"  # 手动映射宿主机的 IP
    
  2. 运行docker-compose,这会将host.docker.internal映射到宿主机IP地址。

总结

  • 使用host.docker.internal是最简便的方法,这个DNS名会自动解析到宿主机的IP地址。
  • 如若希望容器直接使用宿主机网络,可以使用network_mode: "host",让容器与宿主机共享网络堆栈。
  • 如若欲继续使用Docker自定义的网络,但仍然访问宿主机服务,可以使用extra_hosts来手动指定宿主机 IP。

根据需求选择合适的方案,修改配置后应该可以解决Docker容器无法连接宿主机上数据库服务的问题。

Also on / Aussi sur / También en / Cē̤-sē̤ iâ ô / 亦可見於 / こちらも: