Heim > Fragen und Antworten > Hauptteil
我是刚接触docker的小白,今天试着用dockerfile 构建一个tomcat镜像
结果在docker run 镜像时 报错
/bin/sh: /usr/local/tomcat/bin/startup.sh: No such file or directory
我的dockerfile 文件内容如下: 请高手指点一下。谢谢
# tomcat
#
# VERSION 1.0
# 使用centos作为基准镜像
FROM centos
MAINTAINER lilin
# 使用root用户
USER root
ADD ./jdk-8u111-linux-x64.rpm /root
ADD ./tomcat /usr/local
#set environment variable
ENV JAVA_HOME /root/jdk-8u111-linux-x64
ENV PATH $JAVA_HOME/bin:$PATH
# 设置Tomcat7初始化运行,SSH终端服务器作为后台运行
ENTRYPOINT /usr/local/tomcat/bin/startup.sh && tail -F /usr/local/tomcat/logs/catalina.out
# 对外(其他容器)开放8080端口
EXPOSE 88
仅有的幸福2017-04-25 09:05:20
拥有dockerfile 不一定就有镜像文件。 你可以通过 docker build -t ${tagName} . 来构建image文件。 然后再通过镜像文件创建CONTAINER, 最终能够运行的是你的container。 对于你当前的例子你可以通过如下命令完成上述过程:
sudo docker build -t mytomcat .
sudo docker run -p 8080:8080 mytomcat //在这里你可以加上特定参数
曾经蜡笔没有小新2017-04-25 09:05:20
在自己编写Dockerfile之前,最好先实践一次Dockerfile的构建过程。
按自己的逻辑,通过基础镜像创建并进入容器,把想要在Dockerfile中写入的命令自己先执行一遍,看看是否存在问题,并解决这些问题,之后汇总所有命令写成Dockerfile。
而不是直接纸上谈兵写出一个Dockerfile出来。
这里错误以及很明显了,Tomcat的启动脚本/usr/local/tomcat/bin/startup.sh
不存在,所以容器不能启动起来。请先自己在容器中实践一次Tomcat的搭建,看看Tomcat应该怎样启动,启动缺少哪些问题,把所有问题解决了,自己搭建的Tomcat能跑起来了,再把这些东西写成Dockerfile。空写Dockerfile看似很厉害很节约实践,其实很纯很浪费时间。