运行 docker 容器中的 shell 脚本
Running a shell script in docker container
世界人民,您好!
我正在进入容器化,docker我正在尝试创建一些基本容器。
我 运行宁 Docker Windows。
我想创建一个容器,其中 运行 是一个带有 curl 命令的 shell 脚本。我在 docker 上找到了一张内置卷曲的图片。
我在 windows 中的目录结构看起来像
Curl_container(文件夹)
Docker文件(文件)
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
我想将脚本 运行ning 放在文件夹 /apps 中,但我认为这是我的问题,因此尝试将文件放入根目录。
我已经尝试用 ADD 命令代替 COPY,但我得到了相同的结果。
curl_registry.sh 在 windows.
中显示为 .sh 文件
我有 运行 我的 sh 文件通过记事本++转换为 unix LF。
在容器内使用bash和运行命令,解决出现的错误,然后当命令运行时,可以将这些命令添加到docker文件。
sudo docker exec -it (container name) /bin/bash
默认情况下,您是 docker 容器中的根用户。
您的 alpine 图像没有 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
世界人民,您好!
我正在进入容器化,docker我正在尝试创建一些基本容器。 我 运行宁 Docker Windows。
我想创建一个容器,其中 运行 是一个带有 curl 命令的 shell 脚本。我在 docker 上找到了一张内置卷曲的图片。
我在 windows 中的目录结构看起来像
Curl_container(文件夹)
Docker文件(文件)
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
我想将脚本 运行ning 放在文件夹 /apps 中,但我认为这是我的问题,因此尝试将文件放入根目录。
我已经尝试用 ADD 命令代替 COPY,但我得到了相同的结果。
curl_registry.sh 在 windows.
我有 运行 我的 sh 文件通过记事本++转换为 unix LF。
在容器内使用bash和运行命令,解决出现的错误,然后当命令运行时,可以将这些命令添加到docker文件。
sudo docker exec -it (container name) /bin/bash
默认情况下,您是 docker 容器中的根用户。
您的 alpine 图像没有 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