!Logo
维护者:Gurobi Optimization
获取帮助:Gurobi支持、Gurobi文档
构建生产应用时,建议使用明确的版本号而非latest标签,以便您控制应用的升级过程。
支持的架构:linux/amd64, linux/arm64
已发布镜像制品详情:[***]
DockerHub上可用的Gurobi镜像:
gurobi/optimizer?Gurobi Optimizer是目前可用于求解LP(线性规划)、QP(二次规划)和MIP(混合整数线性规划、混合整数二次规划、混合整数二次约束规划)问题的最快速、最强大的数学规划求解器。更多信息请访问Gurobi官网。
Gurobi Optimizer支持多种编程和建模语言,详见参考手册。
gurobi/optimizer镜像提供了一个基础Docker镜像,用于使用任何支持的API(C、C++、Java、.NET、Python、MATLAB和R)构建应用,同时包含命令行工具(如gurobi_cl)和Python shell。如果您仅计划使用Python API,建议使用gurobi/python镜像。
Gurobi Optimizer需要许可证才能运行。在Docker容器中运行时,您有以下几种选择:
网络许可服务(WLS)是Gurobi针对容器化环境(Docker、Kubernetes等)推出的新型许可服务。Gurobi组件可自动向全球多个地区的WLS服务器请求和续期许可令牌。WLS仅要求容器能够访问互联网。商业用户可申请评估许可,学术用户可申请免费许可。请注册访问网络许可管理器并阅读文档。
Gurobi计算服务器允许您将优化计算无缝卸载到一个或多个专用优化服务器组成的集群。用户和应用可通过高级排队和负载均衡功能共享服务器。用户可监控作业,管理员可管理服务器。集群管理器提供额外功能和安全管理。计算服务器和集群管理器可在容器化环境外使用标准许可证安装,或在容器化环境中使用WLS许可证安装。
Gurobi云服务是一种简单且经济高效的方式,可在云服务上运行强大的Gurobi优化软件。您可以在Microsoft Azure®和Amazon Web Services®上启动一台或多台预加载Gurobi软件的专用计算机。
Gurobi令牌服务器运行在Docker集群外的专用机器上。Docker容器中运行的客户端程序可从令牌服务器请求令牌。
注意:其他标准许可证类型(NODE、学术版)不支持容器环境。请联系销售代表(***)讨论许可选项。
您需要指定一组属性来连接计算服务器集群、Gurobi云服务或令牌服务器。为此,您有以下选项:
挂载客户端许可证文件:客户端许可证文件(通常名为gurobi.lic)包含连接参数,可挂载到容器中。这种方式适用于Docker测试。在Kubernetes中,许可证文件可存储为密钥并挂载到容器。
通过API设置参数:当应用创建Gurobi环境时,可通过API指定连接参数。参数值可来自环境变量、数据库或应用所需的其他来源。
有关API参数和许可证文件属性的快速指南,请参见此处。
不建议将许可证文件添加到Docker镜像中,因为这既不灵活(无法使用同一镜像进行不同设置),也不安全(某些许可证文件包含应保密的API密钥等凭据)。
以下命令行示例将运行本地机器上存储的模型文件。模型文件必须存储在将被挂载到实例的本地目录中。
在当前目录(使用$PWD获取)中,创建一个包含您要运行的模型的子目录:
目录:`$PWD/models` 内容:`poolsearch.py`、`stein9.mps`
参见一些模型示例。
此镜像可直接用于某些测试,但主要用途是帮助使用Gurobi API构建应用。您可以将此镜像作为基础镜像,并添加特定的应用依赖。以下是Dockerfile示例:
文件Dockerfile
# 指定Gurobi基础镜像 FROM gurobi/optimizer:latest # 设置应用目录 WORKDIR /app # 复制应用代码 ADD . /app # 启动应用的命令 CMD [...]
构建自定义镜像后,可使用Docker、Docker Compose或Kubernetes部署:
docker build -t my-gurobi-app .
如前所述,不应将许可证文件复制到镜像中,下一节将提供挂载许可证文件的示例。
gurobi/optimizer实例进行优化以下命令启动gurobi/optimizer容器,挂载包含本地模型的目录,然后优化模型stein9.mps:
console$ docker run --volume=$PWD/gurobi.lic:/opt/gurobi/gurobi.lic:ro \ --volume=$PWD/models:/models:ro \ gurobi/optimizer gurobi_cl /models/stein9.mps
如需启用客户端/服务器日志,可设置GRB_CLIENT_LOG变量:
console$ docker run --env=GRB_CLIENT_LOG=3 \ --volume=$PWD/gurobi.lic:/opt/gurobi/gurobi.lic:ro \ --volume=$PWD/models:/models:ro \ gurobi/optimizer /models/poolsearch.py
如果已构建自定义镜像,可应用相同概念:
console$ docker run --env=GRB_CLIENT_LOG=3 \ --volume=$PWD/gurobi.lic:/opt/gurobi/gurobi.lic:ro \ my-gurobi-app
如果您的应用需要不同组件(数据库、前端WebUI、后端服务等),可使用Docker Compose。Docker Compose将帮助构建和连接这些组件。本地测试时,可将许可证文件作为卷挂载。
Gurobi Python实例的docker-compose.yml示例:
version: '3.7' services: gurobi: image: <your-own-custom-image> volumes: - ./gurobi.lic:/opt/gurobi/gurobi.lic:ro
运行$ docker-compose up --build构建并运行应用。
类似地,可使用Kubernetes在集群中部署应用。以下是使用自定义镜像<your-own-custom-image>的应用部署描述文件deployment.yaml示例:
apiVersion: apps/v1 kind: Deployment metadata: name: optim labels: name: optim spec: selector: matchLabels: name: optim replicas: 1 template: metadata: labels: name: optim spec: volumes: - name: gurobi-lic secret: secretName: gurobi-lic containers: - name: optim image: <your-own-custom-image> imagePullPolicy: IfNotPresent volumeMounts: - name: gurobi-lic mountPath: "/opt/gurobi_lic" readOnly: true env: - name: GRB_LICENSE_FILE value: "/opt/gurobi_lic/gurobi.lic"
部署应用前,建议将许可证文件存储为密钥并挂载到容器中:
kubectl create secret generic gurobi-lic --from-file="gurobi.lic=$PWD/gurobi.lic" kubectl apply -f deployment.yaml
如果在同一集群中部署自定义镜像和集群管理器,需将应用连接到集群管理器。建议按以下步骤操作:
kubectl create secret generic gurobi-manager --from-literal=accessId=xxxxx --from-literal=secret=xxxxxx
env: - name: GRB_CSMANAGER value: "[***]" - name: GRB_CSAPIACCESSID valueFrom: secretKeyRef: name: gurobi-manager key: accessId - name: GRB_CSAPISECRET valueFrom: secretKeyRef: name: gurobi-manager key: secret
env = Env(empty=True) csManager = os.getenv('GRB_CSMANAGER','') if csManager: env.setParam('CSManager', csManager) csAPIAccessId = os.getenv('GRB_CSAPIACCESSID','') if csAPIAccessId: env.setParam('CSAPIAccessID', csAPIAccessId) csAPISecret = os.getenv('GRB_CSAPISECRET','') if csAPISecret: env.setParam('CSAPISecret', csAPISecret) env.start()
可使用以下环境变量:
GRB_CLIENT_LOG:启用或禁用客户端-服务器日志。选项包括关闭(0)、仅错误消息(1)、信息和错误消息(2)或详细信息、信息和错误消息(3)。下载并使用此镜像即表示您同意包含在此镜像中的Gurobi软件的最终用户许可协议。
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能受其他许可证约束(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖项)。
对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用符合其中包含的所有软件的相关许可证。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429