IRIS 是 InterSystems 的数据平台,非 Python 的 Iris 数据集;正确 Docker 镜像为 intersystems/irishealth-community:latest-em-linux-x86_64,需映射 1972 和 52773 端口,首次登录必须修改 _SYSTEM 密码并挂载 /usr/irissys/mgr 持久化。

IRIS 不是 Iris 框架——这是最容易踩的第一个坑。InterSystems IRIS 是一个数据平台,而 Iris 是 Python 的机器学习教学数据集(sklearn.datasets.load_iris)或 R 语言的统计分析包名。如果你搜的是“用 Docker 打包 Iris”,大概率是混淆了概念,实际想部署的是 InterSystems IRIS 实例。
确认你真正要容器化的对象是 InterSystems IRIS
很多人在 Docker Hub 搜 iris,结果拉下 rocker/iris(R 语言镜像)或误以为 intersystems/iris 是 Python 库。正确镜像名必须带厂商前缀:intersystems/irishealth-community(社区版)或 intersystems/iris(商用版)。ARM 架构(如 Raspberry Pi)需额外指定 -em-linux-arm64v8 后缀,x86_64 服务器则用 -em-linux-x86_64。
- 运行前先验证镜像是否存在:
docker pull intersystems/irishealth-community:latest-em-linux-x86_64 - 拉取失败?检查是否漏了
-em-(表示 embedded,IRIS 官方只发布嵌入式版本镜像) - 看到
manifest unknown错误?说明标签写错,去 Docker Hub 页面 看最新可用 tag
启动容器时必须暴露两个关键端口
IRIS 不是单端口服务。它内部包含数据库监听器(1972)和 Web 管理门户(52773),缺一不可。只映射 52773 会导致 JDBC/ODBC 连不上;只映射 1972 则进不了 Management Portal。
- 标准启动命令:
docker run --name my-iris -d --publish 1972:1972 --publish 52773:52773 intersystems/irishealth-community:latest-em-linux-x86_64 - 若宿主机
52773已被占用,可改映射为52774:52773,但访问地址要同步改成http://localhost:52774/csp/sys/%25CSP.Portal.Home.zen - 不要加
--rm:IRIS 实例首次启动会初始化系统命名空间、生成日志和数据库文件,关容器即丢数据
首次登录后必须立即改密码,否则外部连接全被拒绝
IRIS 启动后默认账号是 _SYSTEM/SYS,但安全策略强制要求首次登录 Management Portal 后立刻修改密码。不改,1972 端口对所有客户端(包括 irispython、JDBC、ODBC)返回 <strong>ERROR #6053: User _SYSTEM is locked out</strong>。
- 访问
http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen,用_SYSTEM/SYS登录 - 顶部菜单 → System Administration → Security → Users →
_SYSTEM→ Edit → 修改 Password - 改完后重启容器:
docker restart my-iris,否则新密码不生效 - 验证连接:
irispython -U USER -H localhost -P 1972 -s(需提前装irispython包)
IRIS 容器化真正的复杂点不在启动命令,而在于许可证和持久化。镜像里不带许可证文件,docker run 启动后最多试用 7 天;数据目录(/usr/irissys/mgr)若没挂载到宿主机 volume,容器删掉就等于整个实例销毁。这两项不处理,后续做备份、升级或高可用时必然卡住。











