如何在图像构建之后/之后自动运行docker容器?

时间:2016-02-05 17:39:51

标签: tomcat docker dockerfile

我是码头工人的新人,如果我错过了一些明显的话,那就很抱歉

我对Dockerfile的计划。

  1. 拉tomcat:7.0
  2. 启动服务器
  3. 下载帮助文件并解压缩。
  4. 下载所需的war文件并将其重命名为ROOT.war。
  5. 我已设法通过手动运行这些命令来实现此目的。

    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 line docker run -it --rm -p 8888:8080 tomcat:8.0

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

1 个答案:

答案 0 :(得分:8)

Dockerfile的作用是创建图像而不是容器。

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

然后,您可以运行图像来创建容器。

您还可以在CMD中指定要运行的Dockerfile(默认情况下)。那就是(我认为)

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

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