Happy3w

Docker-运行自己的应用

2017.01.12
运行了别人放在docker中的应用了,现在我们来将自己的应用也放入Docker 比如可以使用java开发一个程序,这里不提供样例了,只要最终打包中可运行的jar都行,也可以从其他地方找一个jar文件过来 这里我们用test.jar。 在存放test.jar文件的目录中创建一个文件Dockerfile内容如下: FROM frolvlad/alpine-oraclejdk8:slim RUN mkdir /var/app ADD test.jar app.jar RUN sh -c 'touch /app.jar' WORKDIR / ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar >> /var/app/test.log 2>&1" ] 之后在Dockerfile目录中执行如下命令 docker build -t test:v1 . 再执行docker images,就能看到刚刚创建的名称是test,版本是v1的Image了 通过命令docker run -d test:v1即可执行这个image。 解释一下过程中的文件和命令 Dockerfile中内容 FROM:这个配置用于声明我们要创建的Image是基于其他的哪个Image创建的。每一个Image都必须有且只有一个这个配置。我使用的程序是一个java程序,所以选择了一个jdk的image。python的程序可以选择python的image,比如python:3.5。其实也可以使用最底层的系统级image,但是所有的东西需要自己弄会比较繁琐,个人根据自己情况选择。 RUN:这个配置用来在Image中运行脚本。这里只是创建了一个目录。 ADD:将本地文件添加到Image中 WORKDIR:用于指定工作目录。 ENV:设置可用的环境变量。这个变量是可以在启动的时候通过参数-e设置的变量。 ENTRYPOINT:设置docker image启动的时候需要执行的命令。 详细参见https://docs.docker.com/engine/reference/builder/ docker是通过分层的方式创建Image的,每个命令会独占一层,每次build的时候没有改变的Layer是不会被重新build的,因此将变化频繁的内容放在比较靠下的位置,可以提升Image的build速度。 docker的build命令 docker build -t test:v1 . -t:用来指定这次build使用的tag信息,tag信息格式[{repository}/]{imageName}[:{version}] repository:仓库信息,类似10.100.78.141:9443,可以省略 imageName:Image的名称,不可省略,不能带有空格,不能有横线,不能数字开头。(要求好多) version:自己设定的Image版本信息,可以省略,默认为latest 注意这个命令的最后有一个点,这个点表示了当前路径,docker build会在当前路径找到Dockerfile文件进行build。 详细参见https://docs.docker.com/engine/reference/commandline/build/ 上一篇  下一篇