学习编写Dockerfile

前言

        我们学习docker的话,其主要目的还是要用来改变我们部署应用程序的传统习惯,达到解放生产力,解放人力的目的。这篇则自己来熟悉一下dockerfile常用命令。并且尝试改变下生产环境手动部署应用的方式。

 

常用基础命令

     FROM 该dockerfile的基础镜像

     RUN 启动时用来执行命令,通常用来执行应用程序安装和更新

     CMD docker启动时,RUN执行前默认调用的命令,多条命令的话只会执行最后一条命令。

     COPY 从上下文环境中复制文件到容器中。

     ADD 更高级的复制功能,提供解压功能。

     EXPOSE 暴露端口。

 

第一个Dockerfile

     好吧,先来个hello world体检下dockerfile的便捷之处。

   

FROM ubuntu:14.04
MAINTAINER luck_successful@163.com

RUN apt-get update

CMD echo "hello docker I am garfieldzf"

 接下来就生成镜像

 docker build -t myubuntu:v1 

执行无误后在终端里会显示hello docker I am garfieldzf

 

第二个Dockerfile

    这个dockerfile则用来部署一个war包到容器中的tomcat中。在宿主机创建目录/usr/dockerfile。拷贝apache-tomcat-8.0.53.tar.gz、jdk-8u161-linux-x64.tar.gz  springMVC.war都当前目录中。

   创建Dockerfile文件并修改内容 touch Dockerfile  vi Dockerfile

FROM centos:latest
MAINTAINER [email protected]

WORKDIR /usr
RUN mkdir jdk
RUN mkdir tomcat

ADD jdk-8u161-linux-x64.tar.gz /usr/jdk/
ADD apache-tomcat-8.0.53.tar.gz /usr/tomcat/

ENV JAVA_HOME /usr/jdk/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
ENV CATALINA_HOME /usr/tomcat/apache-tomcat-8.0.53 
ENV CATALINA_BASE /usr/tomcat/apache-tomcat-8.0.53 
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/tomcat/apache-tomcat-8.0.53/bin/catalina.sh run 

  这里注意,我从本地下载的tomcat没有修改端口,一开始EXPOSE写的 80端口。build 和run后tomcat访问不了。这才想起来端口不对。

       构建镜像。注意后面的小数点,表示构建镜像的上下文环境。

       docker build -t garfieldzf/tomcat  . 

学习编写Dockerfile_第1张图片

 

 构建完成使用docker images会看到刚才构建的文件

学习编写Dockerfile_第2张图片

 

  运行镜像。 以后来运行的方式来运行。启动后会返回容器id

  docker run -d -it -p 8080:8080 garfieldzf/tomcat

  先来访问tomcat。看到tomcat跑起来,则说明容器内容tomcat已启动

学习编写Dockerfile_第3张图片         

   接下来就是把本机的war包部署到容器的tomcat目录下

   使用docker cp 把war复制到容器里。复制前先用docker ps查看容器id

   docker cp springMVC.war [容器id]:/usr/tomcat/apache-tomcat-8.0.53/webapps/

   重启容器

   docker restart [容器id]

   访问:http://192.168.80.129:8080/springMVC/

学习编写Dockerfile_第4张图片

 

 

 完事。 第一个Dockerfile完成了。

   

   

你可能感兴趣的:(学习编写Dockerfile)