请问怎么在Docker中运行SPEC CPU 2006


这是我的Dockerfile:
FROM ubuntu:latest
MAINTAINER ruanbowen@gmail.com

ADD speccpu2k6 /spec/speccpu2k6

WORKDIR /spec
RUN chmod -R ugo-w speccpu2k6
WORKDIR /spec/speccpu2k6
RUN . ./shrc

CMD runspec --config Example-linux64-amd64-gcc43.cfg --noreportable mcf


第4行把SPEC CPU 2006(一个Benchmark)添加到镜像;
第6-9行修改目录权限,添加环境变量;
第11行执行某个Benchmark

但是build完成之后,再run一个容器时会报错:
/bin/sh: 1: runspec: not found


很显然是环境变量的问题(RUN . ./shrc就是设置路径),可是我在本地做同样的操作时可以正常运行,但是放到Docker中就报错。那么到底是这个Dockerfile的写法有问题,还是Docker中有些默认的机制使得环境变量读取有问题呢?
已邀请:

[已注销]

赞同来自:


<ol><li>把你的设置从脚本里移到 ENV 命令里面吧</li><li> CMD 的写法有问题,这种写法是默认通过/bin/sh -c执行的,最好用CMD 这种形式</li></ol>

许四两 - 北京数字安全公司运维工程师

赞同来自:


RUN . ./shrc 这条我理解是设置一些环境变量。

docker build的 方式是,用上一层build开启临时镜像然后将这层命令添加进入。

如果你的命令没有固话成配置文件,那么镜像启动后是没有加载的。

环境变量应该用dockerfile来写 ENV key=value

或者再每次启动docker的时候先运行 ./shrc

要回复问题请先登录注册