如何使用json数组格式为Docker ENTRYPOINT运行多个语句?

时间:2014-08-07 06:14:59

标签: linux docker

我需要在开始服务之前设置ulimitsysctl,因此我一直在ENTRYPOINT中执行以下操作:

ulimit -n 4096; sysctl -p; start_service

但似乎如果我想使用CMD作为ENTRYPOINT的默认参数,我必须使用json数组格式。

但我不知道如何使用json数组格式运行多个语句。

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是将其作为脚本执行(这里将start_service替换为一个简单的echo用于测试)

$ cat start.sh
#!/bin/bash
ulimit -n 4096; sysctl -p; echo $@

$ cat Dockerfile
FROM ubuntu
COPY . /tmp
CMD ["test"]
ENTRYPOINT ["/tmp/start.sh"]

$ docker build -t test .
...

$ docker run test
test

$ docker run test "hello world"
hello world

在构建容器之前请记住chmod 755 start.sh,否则脚本将无法执行。