学习编写Dockerfile

前言

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

常用基础命令

FROM 该dockerfile的基础镜像

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

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

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

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

EXPOSE 暴露端口。

第一个Dockerfile

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

FROM ubuntu:14.04
MAINTAINER [email protected]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  . 

构建完成使用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完成了。

原文地址:https://www.cnblogs.com/sword-successful/p/10010061.html

时间: 2024-11-09 00:59:18

学习编写Dockerfile的相关文章

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

1 Dockerfile结构 基础镜像信息 镜像操作指令 容器启动时执行指令 2 FROM 指定基础镜像,用于继承其他镜像使用的 FROM ubuntu:14.06 FROM centos FROM nginx:latest 3 LABEL 镜像创建者的基本信息 4 ENV 定义Docker容器内的环境变量 ENV # 只能设置一个变量 ENV = … # 允许一次设置多个变量 ENV <key> <value> 指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持 示例:

Python学习 - 编写自己的ORM(1)

这篇博文参考的是廖雪峰的Python教程的实战部分,传送门.推荐大家看看装饰器和使用元类这两个章节,然后在看实战部分. 这篇博文有时间了还会更新,主要是学习Python的语法,如上面提到的装饰器和元类. 起步:编写简单的ORM对象 写一个类映射某个数据表,下面是写一个User类,对应数据库中的user表: class User(Model): id = StringField(primary_key=True,ddl='varchar(50)') name = StringField(ddl='

编写dockerfile

参考:http://www.cnblogs.com/liuyansheng/p/6098470.html 一.dockerfile介绍: 是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile.Docker程序将读取Dockerfile,根据指令生成定制

Docker实战(五)编写Dockerfile

一.创建Dockerfile文件 首先,需要创建一个目录来存放 Dockerfile 文件,目录名称可以任意,在目录里创建Dockerfile文件: 二.Dockerfile 基本框架 Dockerfile一般包含下面几个部分: 基础镜像:以哪个镜像作为基础进行制作,用法是FROM 基础镜像名称 维护者信息:需要写下该Dockerfile编写人的姓名或邮箱,用法是MANITAINER 名字/邮箱 镜像操作命令:对基础镜像要进行的改造命令,比如安装新的软件,进行哪些特殊配置等,常见的是RUN 命令

编写Dockerfile文件,构建自己的centos镜像

#自定义mycentos目的使我们自己的镜像具备如下功能:1.登录后的默认路径2.可以使用vim 编辑器3.能够使用查看网络配置的ifconfig命令#编写[[email protected] ~]# cd /mydocker[[email protected] mydocker]# lltotal 4-rw-r--r-- 1 root root 137 Jan 12 15:37 Dockerfile[[email protected] mydocker]# vim Dockerfile2 FR

Docker学习笔记 — Dockerfile

基本结构 可以使用Dockerfile自定义镜像. Dockerfile分为四个部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行指令. # This dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] .. # Base image to use, this must be s

Python学习 - 编写一个简单的web框架(一)

自己动手写一个web框架,因为我是菜鸟,对于python的一些内建函数不是清楚,所以在写这篇文章之前需要一些python和WSGI的预备知识,这是一系列文章.这一篇只实现了如何处理url. 参考这篇文章:http://www.cnblogs.com/russellluo/p/3338616.html 预备知识 web框架主要是实现web服务器和web应用之间的交互.底层的网络协议主要有web服务器完成.譬如监听端口,填充报文等等. Python内建函数__iter__和__call__和WSGI

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

在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其中,然后让docker读取并分析.执行,那么重复构建.更新将变得很方便,所以Dockerfile就此诞生了.Docker提供了Dockerfile作为构建Docker镜像脚本,避免人们一行一行的输入,真是善莫大焉.Dockerfile脚本可以做到随时维护修改,即可以分享,更有利于在模板化,更不用说传

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

最初在tomcat上部署web应用的方式,是通过maven的maven-compiler-plugin插件先打成war包,再将war包复制到tomcat的webapps目录下,后来用上了tomcat7-maven-plugin插件,可以直接在maven上编译,打包,部署一次性完成,这个方法的关键是在tomcat上创建一个用户账号,然后maven插件用此账号和密码来执行在线部署. 本次实践中,我们要动手制作一个镜像,这个镜像run起来后是个tomcat server,这个server支持maven