如何自动 运行 一个 docker 容器 on/after 镜像构建?

How can I automatically run a docker container on/after image build?

我是 docker 的新手,如果我遗漏了一些明显的东西,我深表歉意

我对 Dockerfile 的计划。

  1. 拉tomcat:7.0
  2. 启动服务器
  3. 下载帮助文件并解压缩。
  4. 下载所需的 war 文件并将其重命名为 ROOT.war。

我已经通过 运行 手动执行这些命令设法做到了这一点。

docker run -it --rm -p 8888:8080 tomcat:8.0

然后手动执行 wget 并重命名,尽管我希望这一切都在 docker 文件中完成。

这是我到目前为止设法做到的。

FROM tomcat:7.0

RUN /bin/bash -c "cd /usr/local/tomcat/webapps"


RUN /bin/bash -c "wget -O files.zip https://***"
RUN /bin/bash -c "unzip files.zip"

RUN /bin/bash -c "rm -r ROOT"
RUN /bin/bash -c "wget -O ROOT.war https://***"

尽管我不确定如何 运行 之前的 docker 行 docker run -it --rm -p 8888:8080 tomcat:8.0

我从官方 Tomcat 在线 here 那里得到了那句话。我注意到他们提到了这个 Run the default Tomcat server (CMD ["catalina.sh", "run"]): 但我不知道如何实现它。

Dockerfile 所做的是创建一个图像,而不是容器。

当您执行 docker build -t <tagname> . 时,如果您 运行 docker images,将会看到结果(已标记)。

然后您可以运行那个image创建一个容器。

您还可以在Dockerfile中指定一个CMD到运行(默认)。那将是(我认为)

CMD [ "catalina.sh", "run" ] 

所以:

docker build -t my_tomcat_app .
docker run -d -p 8888:8080 --name my_tomcat_container my_tomcat_app

这将从您的图像创建一个容器,并且 运行 无论 CMD 说什么。你可以用 docker exec

在里面翻找
docker exec -it my_tomcat_container bash

但它会保留 运行ning(因为 -d 标志)并出现在 docker ps 中。