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

时间:2016-05-26 21:58:22

标签: docker dockerfile

我正在尝试编写一个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容器中进行此工作?

2 个答案:

答案 0 :(得分: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)

简单示例

  1. 写一个&#34; Dockerfile&#34;
  2. FROM ubuntu:14.04 - #image用于构建容器

    ENTRYPOINT [&#34; / bin / echo&#34;] - 在启动容器时执行的#命令

    1. 确认您与&#34; Dockerfile&#34;位于同一目录中。

    2. sudo docker build。

    3. 你完成了

      示例输出:

      ahanjura @ ubuntu:〜$ vi Dockerfile

      ahanjura @ ubuntu:〜$ sudo docker build。

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