1

Dockerfile

执行Dockerfile

  • FROM <image>:<tag> 指定镜像
  • MAINTAINER <name> 维护者
  • RUN <command> 运行命令
  • CMD 为容器提供默认值,默认提供给ENTRYPOINT,docker命令添加参数可覆盖原有的
  • RUN 执行任何指令并提交结果,用于Dockerfile的下一步工作
  • EXPOSE 暴露端口号
  • ENV <key> <value> 环境变量
  • ADD <src> <dest> 从<src>复制新文件,目录或远程文件URL,并将它们添加到路径<dest>的映像文件系统。
  • COPY <src> <dest> 从<src>复制新文件或目录,并将它们添加到容器的文件系统,路径<dest>。
  • ENTRYPOINT 允许您配置将作为可执行文件运行的容器。docker命令添加参数可覆盖不原有的,如想覆盖需要添加--entrypoint
  • VOLUME 创建具有指定名称的安装点,并将其标记为从本机主机或其他容器保留外部安装的卷。
  • USER 指定运行容器的用户名
  • WORKDIR 为Dockerfile中的任何RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录

vim Dockerfile

FROM centos:latest

MAINTAINER ellis xxx@qq.com

# OS环境配置
RUN yum clean all
RUN yum install -y wget

# 安装JDK
RUN mkdir /var/tmp/jdk
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  -P /var/tmp/jdk http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
RUN tar xzf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz -C /var/tmp/jdk && rm -rf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz

#设置环境变量
ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_151
ENV CATALINA_HOME /var/tmp/tomcat/apache-tomcat-8.5.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露端口
EXPOSE 7070

#上传工程包
RUN mkdir -p /test/demo

COPY cloud-eureka-server-0.0.1-SNAPSHOT.jar /test/demo

ENTRYPOINT ["sh", "-c", "cd /test/demo;java -jar cloud-eureka-server-0.0.1-SNAPSHOT.jar"]

创建test-dockerfile的仓库

➜  docker build -t test_demo .
Sending build context to Docker daemon  51.35MB
Step 1/14 : FROM centos:latest
 ---> a8493f5f50ff
Step 2/14 : MAINTAINER ellis 282390074@qq.com
 ---> Using cache
 ---> c634b5fb0309
Step 3/14 : RUN yum clean all
 ---> Using cache
 ---> 0dd52fc7970b
Step 4/14 : RUN yum install -y wget
 ---> Using cache
 ---> 1f2ff9aa7889
Step 5/14 : RUN mkdir /var/tmp/jdk
 ---> Using cache
 ---> 48a810aafba3
Step 6/14 : RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  -P /var/tmp/jdk http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
 ---> Using cache
 ---> 88372ad590d7
Step 7/14 : RUN tar xzf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz -C /var/tmp/jdk && rm -rf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz
 ---> Using cache
 ---> b415f3947273
Step 8/14 : ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_151
 ---> Using cache
 ---> 25cf99b2d7e2
Step 9/14 : ENV CATALINA_HOME /var/tmp/tomcat/apache-tomcat-8.5.8
 ---> Using cache
 ---> cd33c693ec97
Step 10/14 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
 ---> Using cache
 ---> 8503dab918cd
Step 11/14 : EXPOSE 7070
 ---> Using cache
 ---> e8d866b900d7
Step 12/14 : RUN mkdir -p /test/demo
 ---> Using cache
 ---> a4be88f4d72d
Step 13/14 : COPY cloud-eureka-server-0.0.1-SNAPSHOT.jar /test/demo
 ---> Using cache
 ---> dc61e44cbd4b
Step 14/14 : ENTRYPOINT sh -c cd /test/demo;java -jar cloud-eureka-server-0.0.1-SNAPSHOT.jar
 ---> Using cache
 ---> b756a23f0a24
Successfully built b756a23f0a24
Successfully tagged test_demo:latest

执行的时候还是需要-p指定端口映射关系,才能正常访问。-d为以守护进程方式运行

➜  docker run -d -p 7070:7070  test_demo:latest
cf5bd9b29030bbaaf1cc20344dd7489b2bb2aca31ddabd2e0d3414ec6d6589ff

然后就可以正常访问了


ellis
124 声望9 粉丝

进击的程序猿