如何编写dockerfile来执行简单的bash脚本?

问题描述 投票:1回答:2

我正在尝试编写一个docker镜像,通过netcat运行一个简单的Web服务器。

所以我在docker build文件夹中:

Dockerfile
index.html
run_netcat_webserver.sh

run_netcat_webserver.sh非常简单,工作正常:

#!/bin/bash

while true ; do nc -l 8080  < index.html ; done

这是我天真的Dockerfile当然不能正常工作:

FROM ubuntu:14.04

CMD run_netcat_webserver.sh

我应该如何在docker容器中进行此工作?

docker dockerfile
2个回答
3
投票

您需要使脚本成为容器的一部分。为此,您需要使用Docker文件中的COPY命令复制内部脚本,例如:像这样

FROM ubuntu:14.04
COPY run_netcat_webserver.sh /some/path/run_netcat_webserver.sh
CMD /some/path/run_netcat_webserver.sh

/some/path是您在容器内选择的路径。由于您不需要太在意容器内的用户,它甚至可能只是/

另一种选择是通过安装的卷在外部提供脚本。例:

FROM ubuntu:14.04
VOLUME /scripts
CMD /scripts/run_netcat_webserver.sh

然后,当您运行容器时,指定将作为/scripts挂载的目录。假设您的脚本位于/tmp中,然后将容器作为

docker run --volume=/tmp:/scripts (rest of the command options and arguments)

这将导致您的(主机)目录/tmp将安装在容器的/scripts目录下。


1
投票

简单的例子

  1. 写一个“Dockerfile”

从ubuntu:14.04 - #image用于构建容器

ENTRYPOINT [“/ bin / echo”] - 在启动容器时执行的#命令

  1. 验证您与“Dockerfile”位于同一目录中。
  2. sudo码头工人建造。

你完成了

样本输出:

崩溃@ ubuntu:〜$ vi Dockerfile

ahanjura @ ubuntu:〜$ sudo docker build。

将构建上下文发送到Docker守护程序1.39 GB步骤1:FROM ubuntu:14.04 ---> 67759a80360c步骤2:ENTRYPOINT / bin / echo --->在c0e5f48f7d45中运行---> 7a96b36f528e删除中间容器c0e5f48f7d45成功构建7a96b36f528e

© www.soinside.com 2019 - 2024. All rights reserved.