学习编写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 luck_successful@163.com 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 .
构建完成使用docker images会看到刚才构建的文件
运行镜像。 以后来运行的方式来运行。启动后会返回容器id
docker run -d -it -p 8080:8080 garfieldzf/tomcat
先来访问tomcat。看到tomcat跑起来,则说明容器内容tomcat已启动
接下来就是把本机的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完成了。