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
然后就可以正常访问了