Docker:带有参数和引号的入口点

时间:2019-09-05 20:48:09

标签: linux bash docker quotes

我正在尝试使用entrypoint.sh创建一个Docker映像并在运行Docker时传递参数,问题是当我想使用带双引号的参数时。

我在很多地方进行搜索,我还知道更多是一个Bash问题,以及如何用双引号将参数扩展,但也许有人对如何避免这种情况有所了解。

我的Dockerfile

FROM centos:7

COPY    entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

我的entrypoint.sh

#!/bin/bash

command --display=true "$@"

运行Docker:

docker run -ti docker-image:latest --driver="kernel-4.0 kernel-4.1"

预期行为:

command --display=true --driver="kernel-4.0 kernel-4.1"

实际行为:

command --display=true --driver=kernel-4.0 kernel-4.1

我试图转义双引号,但没有。

1 个答案:

答案 0 :(得分:2)

您是否尝试在值之前转义\?它正在和我一起工作。

#!/bin/bash
echo "all params $@"
command --display=true "$@"

docker run -ti yourimage --driver=\"kernel-4.0 kernel-4.1\"

如@David所述,这是bash脚本的预期行为。

如果您在Docker之外运行entrypoint.sh,它将跳过引号。

./entrypoint.sh --driver="kernel-4.0 kernel-4.1"

#output

all params --driver=kernel-4.0 kernel-4.1
--display=true --driver=kernel-4.0 kernel-4.1

How to keep quotes in Bash arguments?