我正在尝试创建一个带有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
我尝试转义双引号,但是没有效果。
command
的参数列表中看到--driver=kernel-4.0 kernel-4.1
作为一个包含空格但不包括引号的单个参数。在Docker外运行相同的命令也能得到相同的结果。您看到了吗? - David Maze--display=true
,--driver=kernel-4.0
,kernel-4.1
)。因为bash会删除引号。 - mrbit01