嗨,世界上乐于助人的人!
我正在进入集装箱化和码头,我试图创造一些基本的集装箱。我在Windows上运行Docker。
我想要创建一个容器,它使用curl命令运行shell脚本。我在码头上发现了一个内置卷曲的图像。
windows中的目录结构看起来像
Curl_container (文件夹)
Dockerfile (档案)
curl_registry.sh (文件)
curl_registry.sh代码是
#!/bin/bash
    
while :
do
HOSTNAME=$(hostname)
DATE=$(date +'%Y-%m-%d')
TIME=$(date +'%Y/%m/%d %X')
CURL_RESULT=`http://www.google.com | head -1`
    
echo $TIME  $HOSTNAME  $CURL_RESULT
sleep 5
done
exit我的Docker文件看起来像这样
FROM eamonwoortman/alpine-python-curl-zip
MAINTAINER red_badger@burrow.uk
WORKDIR /
COPY . /
RUN ["chmod", "+x","curl_registry.sh"]
ENTRYPOINT [ "./curl_registry.sh" ]我能建造集装箱;
PS C:\temp\Docker\Curl_container> docker build -t curl_container:1.18 .
[+] Building 1.0s (8/8) FINISHED
 => [internal] load build definition from Dockerfile  0.0s
 => transferring dockerfile: 238B                     0.0s
 => [internal] load .dockerignore                     0.0s
 => [internal] load metadata for docker.io/eamonwoortman/alpine-python-curl-zip:latest               0.0s
 => CACHED [1/4] FROM docker.io/eamonwoortman/alpine-python-curl-zip                                 0.0s
 => [2/4] COPY . /                                                                                   0.1s
 => [3/4] RUN ["chmod", "+x","curl_registry.sh"]                                                         
 => writing image sha256:497b03c55d8e90e7eff43c8868e420498516477b9225ad6d3bdf0076ebe9d9ed         0.0s
 => naming to docker.io/library/curl_container:1.18                                               0.0s但是,当我运行它时,我会得到以下错误
PS C:\temp\Docker\Curl_container> docker run 497b03c55d8e
standard_init_linux.go:228: exec user process caused: no such file or directory
我想让脚本在一个文件夹/apps中运行,但我认为这是我的问题,所以尝试将文件放到根目录中。我尝试了ADD命令来代替COPY,并得到了相同的结果。curl_registry.sh在窗口中显示为.sh文件。
我已经通过notepad++运行了sh文件并转换为unix。
发布于 2021-08-20 19:12:11
你的高寒图像没有bash解释器。您需要将解释器更改为ash并修复curl命令。
#!/bin/ash
    
while :
do
HOSTNAME=$(hostname)
DATE=$(date +'%Y-%m-%d')
TIME=$(date +'%Y/%m/%d %X')
CURL_RESULT=`curl -s -N http://www.google.com | head -1`
    
echo $TIME  $HOSTNAME  $CURL_RESULT
sleep 5
done
exit发布于 2021-08-20 16:36:32
在容器中使用bash,运行命令并排除发生的错误,然后当命令工作时,可以将这些命令添加到dockerfile中。
sudo docker exec -it (container name) /bin/bash
默认情况下,您是停靠器容器中的根用户。
https://stackoverflow.com/questions/68864735
复制相似问题