You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Docker创建2个SQL Server与1个Python容器的跨容器连接问题求助

Docker同网络容器互访问题修复指南

同一Docker自定义桥接网络下的容器默认可以直接互相访问,你当前遇到的问题是配置错误导致的,按以下步骤修正即可:


1. 修正SQL Server容器的创建错误

你当前两条启动命令都指定了--name server_1,同Docker实例下容器名唯一,第二个容器要修改名称,命令修正后如下:

# 第一个SQL Server容器(端口映射宿主机1433)
docker run -d --name server_1 --network databases-net -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=StrongPassword123#' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest
# 第二个SQL Server容器(端口映射宿主机1002)
docker run -d --name server_2 --network databases-net -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=StrongPassword123#' -p 1002:1433 mcr.microsoft.com/mssql/server:2019-latest

注:原命令里-dit -d参数重复,保留一个-d即可


2. 修正Python镜像的Dockerfile,安装缺失的ODBC驱动

你当前的报错核心原因是只安装了unixodbc依赖,没有安装SQL Server对应的官方ODBC驱动,修正后的Dockerfile如下:

FROM python:3.9.2-slim-buster

ADD dbconnTest.py .

RUN apt-get update \
  && apt-get -y install gcc g++ unixodbc unixodbc-dev curl gnupg2 \
  # 添加微软软件源,安装ODBC Driver 17 for SQL Server
  && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
  && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
  && apt-get update \
  && ACCEPT_EULA=Y apt-get install -y msodbcsql17 \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

RUN pip install pandas pyodbc

CMD [ "python", "./dbconnTest.py" ]

3. 修正Python代码里的数据库连接地址

同一Docker桥接网络下,容器之间可以直接用容器名作为主机名互相访问,不需要用localhost,也不需要用宿主机映射的端口,直接访问容器内部的1433端口即可,修正后的代码:

import pandas as pd
import pyodbc

cnxn = pyodbc.connect(
       'DRIVER={ODBC Driver 17 for SQL Server}' +
       ';SERVER=' + 'server_1,1433' + ';UID=' + 'sa' +
       ';PWD=' + 'StrongPassword123#' +
       ';database=' + 'tempdb')

df = pd.read_sql('SELECT * FROM Addresses', cnxn)

cnxn.close()

print(df)

注:查询操作不需要执行commit,多余的commit语句可以直接删除


4. 重新构建运行验证

# 重新构建Python镜像
docker build -t python-file .
# 运行Python容器
docker run -d --name python-connect --network databases-net python-file
# 查看运行日志确认连接结果
docker logs python-connect

内容的提问来源于stack exchange,提问作者Mohit Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:24:03