1.我运行下面的cmd并输出:
shshenhx@shshenhx:~/Desktop/Docker/IP$ curl --noproxy '*' http://ip.cn
当前 IP:202.101.0.2 来自:上海市 电信 <====The cmd get my public IP
successfully
2。然后我得到了一个Dockerfile和这样的内容:
FROM ubuntu
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
RUN curl --noproxy '*' http://ip.cn <==Here I run the cmd directly
输出仍然是
shshenhx@shshenhx:~/Desktop/Docker/IP$ curl --noproxy '*' http://ip.cn
当前 IP:202.101.0.2 来自:上海市 电信
3.如果我将最后一行更改为CMD模型,请执行以下操作:
FROM ubuntu
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
CMD ["curl" , "--noproxy '*'" , "http://ip.cn"]
然后我得到了这样的错误:
shshenhx@shshenhx:~/Desktop/Docker/IP$ docker run myip
curl: option --noproxy '*': is unknown
curl: try 'curl --help' or 'curl --manual' for more information
有人能解决这个问题吗?为什么我可以在dockerfile中使用RUN运行curl cmd,但是使用CMD失败了?
答案 0 :(得分:1)
不属于参数的每个空格都需要,
CMD [ "curl" , "--noproxy", "*" , "http://ip.cn" ]
在这种情况下,*
不需要引用,因为没有shell会将*
扩展到当前目录中的文件,参数是直接传递给curl
二进制文件。