前言

我们学习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完成了。

学习编写Dockerfile的更多相关文章

  1. 编写 DockerFile

    编写 DockerFile 本节内容简介 在前面的实验中我们多次用到的 Dockerfile,在本实验里我们将通过完成一个实例来学习Dockerfile的编写. 本节中,我们需要依次完成下面几项任务: ...

  2. [转帖]Docker学习之Dockerfile命令详解

    Docker学习之Dockerfile命令详解 https://it.baiked.com/system/docker/2436.html 图挺好的 前言 之前,制作镜像的伪姿势搭建已经见过了,今天介 ...

  3. 4.Docker容器学习之Dockerfile入门到放弃

    原文地址: 点击直达 0x01 Dockerfile 编写 描述:Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内 ...

  4. Docker容器学习梳理 - Dockerfile构建镜像

    在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...

  5. 实战docker,编写Dockerfile定制tomcat8镜像,实现web应用在线部署

    最初在tomcat上部署web应用的方式,是通过maven的maven-compiler-plugin插件先打成war包,再将war包复制到tomcat的webapps目录下,后来用上了tomcat7 ...

  6. 编写Dockerfile自定义镜像

    要求 编写一个Dockerfile自定义centos镜像,要求在容器内部可以使用vim和ifconfig命令,并且登入落脚点为/usr/local 编写Dockerfile FROM centos M ...

  7. 编写 Dockerfile 生成自定义镜像

    一般情况下我们可以从公共渠道诸如 DockerHub 获取镜像上获取镜像,但是在实际生产过程中,往往需要定制化的镜像,例如修改一些配置文件,增加一些特殊的命令或软件等需求,这时就需要通过编写 Dock ...

  8. DOCKER学习_012:Dockerfile配置指令详解

    1 Dockerfile结构 基础镜像信息 镜像操作指令 容器启动时执行指令 2 FROM 指定基础镜像,用于继承其他镜像使用的 FROM ubuntu:14.06 FROM centos FROM ...

  9. (转)编写 DockerFile

    这几天在研究怎样制作docker image. 其中使用dockerfile是一种可记录制作image的过程的并且是容易重复使用的一种方式.在园子里看到了一篇好文,于是分享到这里~~ 原文链接: ht ...

随机推荐

  1. MFC实现红黑砖块

    MFC实现红黑砖块 题目 老题目了,给定w,h长宽的图,上面有颜色不同的瓷砖,黑和红,问从给的起点出发,只能走黑色瓷砖,能走多少块,可视化输出过程 思路 咋一看搜索水题,但是要用可视化,要用模板类,, ...

  2. webpack学习--安装

    webpack需要在node环境运行,可以去node官网进行下载安装包:http://nodejs.cn/download/ 1.打开cmd命令窗口,运行node -v 2.全局安装webpack:n ...

  3. iis 和 node express 共用80端口 iisnode 全过程

    一.首先下载iisnode.exe https://github.com/tjanczuk/iisnode/wiki/iisnode-releases  链接 安装完毕! 二.打开IIS 7 选中 D ...

  4. 《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)

    上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体 ...

  5. Java EE 导图

  6. dedecms 文章根据 权重排序

    原文链接 一: dede:list   标签 找到 /include/arc.listview.class.php if($orderby=="senddate" || $orde ...

  7. LeetCode笔记:39. Combination Sum

    题目描述 给定一个无重复的正整数数组 candidates 和一个正整数 target, 求所有和为 target 的 candidates 中数的组合中.其中相同数的不同顺序组合算做同一种组合,ca ...

  8. mybatis的配置和使用

    mybatis的配置和使用 MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  9. 从协议入手,剖析OAuth2.0(译 RFC 6749)

    1.介绍      https://tools.ietf.org/html/rfc6749  传统的client-server授权模型,客户端通过使用凭证(通常的用户名和明文密码)访问服务端受保护的资 ...

  10. HTTPS 原理浅析及其在 Android 中的使用

    作者:曹丰斌   本文首先分析HTTP协议在安全性上的不足,进而阐述HTTPS实现安全通信的关键技术点和原理.然后通过抓包分析HTTPS协议的握手以及通信过程.最后总结一下自己在开发过程中遇到的HTT ...