首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在docker容器中运行shell脚本

在docker容器中运行shell脚本
EN

Stack Overflow用户
提问于 2021-08-20 15:37:39
回答 2查看 1.6K关注 0票数 1

嗨,世界上乐于助人的人!

我正在进入集装箱化和码头,我试图创造一些基本的集装箱。我在Windows上运行Docker。

我想要创建一个容器,它使用curl命令运行shell脚本。我在码头上发现了一个内置卷曲的图像。

windows中的目录结构看起来像

Curl_container (文件夹)

Dockerfile (档案)

curl_registry.sh (文件)

curl_registry.sh代码是

代码语言:javascript
运行
复制
#!/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文件看起来像这样

代码语言:javascript
运行
复制
FROM eamonwoortman/alpine-python-curl-zip
MAINTAINER red_badger@burrow.uk
WORKDIR /
COPY . /
RUN ["chmod", "+x","curl_registry.sh"]
ENTRYPOINT [ "./curl_registry.sh" ]

我能建造集装箱;

代码语言:javascript
运行
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-20 19:12:11

你的高寒图像没有bash解释器。您需要将解释器更改为ash并修复curl命令。

代码语言:javascript
运行
复制
#!/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
票数 1
EN

Stack Overflow用户

发布于 2021-08-20 16:36:32

在容器中使用bash,运行命令并排除发生的错误,然后当命令工作时,可以将这些命令添加到dockerfile中。

sudo docker exec -it (container name) /bin/bash

默认情况下,您是停靠器容器中的根用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68864735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档