linux - Docker:带有参数和引号的入口点
问题描述
我正在尝试使用 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
我尝试转义双引号,但没有。
解决方案
您是否尝试\
在价值之前逃脱?它正在和我一起工作。
#!/bin/bash
echo "all params $@"
command --display=true "$@"
和
docker run -ti yourimage --driver=\"kernel-4.0 kernel-4.1\"
正如@David 所提到的,这是 bash 脚本的预期行为。
如果你entrypoint.sh
在 Docker 之外运行,它会跳过引号。
./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
推荐阅读
- excel - 多行的循环求解器
- java - 在 Android Studio 中制作必需的 EditText 字段
- spring - Spring HttpHeaders 中可能存在的错误
- javascript - 对象操作数组
- java - 使用 Java doc API 从 DeclaredType/TypeMirror 获取合格类型
- php - 没有数据发送到mysql服务器?
- c - MPI_Scatterv:当数组大小不是等级的倍数时,处理时间显着增加
- postgresql - 如何将此 SQL 语句转换为 HQL
- ios - 在我的 tableviewcontroller 中看不到导航 barButton 项目
- asp.net - 使用 VS 代码在 ASP.Net 中不显示图像