如何在构build映像时自动运行Docker容器?

如果我错过了一些明显的事情,我对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 run -it --rm -p 8888:8080 tomcat:8.0

我已经在这里从官方的Tomcat在线了 。 我注意到他们提到这个Run the default Tomcat server (CMD ["catalina.sh", "run"]):但我不知道如何实现这一点。

什么是Dockerfile,是创build一个图像,而不是一个容器。

当你做docker build -t <tagname> . 并会看到结果(标记),如果你运行docker images

然后,您可以运行该图像来创build一个容器。

您也可以指定一个CMDDockerfile运行(默认)。 那将是(我认为)

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

所以:

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

这将从您的图像中创build一个容器,并运行CMD所说的任何内容。 你可以用docker exec在里面docker exec

 docker exec -it my_tomcat_container bash 

但它会继续运行(因为-d标志),并在docker ps显示。