虚拟化之Docker(三)——初识Dockerfile

虚拟化主流技术

第一章 虚拟化之ESXi (待补充)
第二章 虚拟化之Hyper-V
第三章 虚拟化之KVM
第四章 虚拟化之Docker(一)
第五章 虚拟化之Docker(二)——部署tomcat
第六章 虚拟化之Docker(三)——初识Dockerfile

前言

上一节我们利用了tomcat镜像跑起来一个自定义的web,大家一定很渴望构建自己的镜像,那就要用到强大的Dockerfile,你可以把Dockerfile理解为shell命令的集合。

一、Dockerfile是什么?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

二、Dockerfile中常用指令

1. FROM

用来指定基础环境,也就是说,你要继承哪个镜像,在它的基础上搞点事情。

2. COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

3. WORKDIR

指定工作目录。

4. RUN

相当于写shell脚本,写的就是linux命令

5. EXPOSE

暴露容器端口

三、写一个Dockerfile栗子(还是tomcat)

首先要在你的指定目录创建Dockerfile文件,我在/usr/local/docker/myapp下创建了我的Dockerfile

[root@docker docker]# mkdir myapp
[root@docker docker]# cd myapp

创建自己的index.jsp文件(我写的是hello myapp),目的还是要替换掉tomcat默认的index.jsp,展示我们自己的内容。

[root@docker myapp]# vi index.jsp

创建Dockerfile

[root@docker myapp]# vi Dockerfile

这是我的Dockerfile,为了避免上一章tomcat出现的问题,这里用了8.0.22版本

FROM tomcat:8.0.22

RUN rm -fr /usr/local/tomcat/webapps/ROOT/*

COPY index.jsp.tar.gz /usr/local/tomcat/webapps/ROOT

WORKDIR /usr/local/tomcat/webapps/ROOT

RUN tar -zxvf index.jsp.tar.gz \
    && rm -fr index.jsp.tar.gz

EXPOSE 8080

然后就可以构建我们自己的镜像了,“.”是上下文的意思,此处你可以理解为将Dockerfile所在的整个目录打包发到定制镜像的指定目录; myapp是我们定制镜像的名称。

[root@docker myapp]# docker build -t myapp .
Sending build context to Docker daemon  4.096kB
Step 1/6 : FROM tomcat:8.0.22
 ---> 76d235c1c377
Step 2/6 : RUN rm -fr /usr/local/tomcat/webapps/ROOT/*
 ---> Running in f97bc27a8bc5
Removing intermediate container f97bc27a8bc5
 ---> f27e501d0477
Step 3/6 : COPY index.jsp.tar.gz /usr/local/tomcat/webapps/ROOT
 ---> ba9562bfa158
Step 4/6 : WORKDIR /usr/local/tomcat/webapps/ROOT
 ---> Running in 9bfe15a844b9
Removing intermediate container 9bfe15a844b9
 ---> fc2fa9ee1564
Step 5/6 : RUN tar -zxvf index.jsp.tar.gz     && rm -fr index.jsp.tar.gz
 ---> Running in 38e49a79ac05
index.jsp
Removing intermediate container 38e49a79ac05
 ---> 66538e6b234e
Step 6/6 : EXPOSE 8080
 ---> Running in a6f5e7500e3b
Removing intermediate container a6f5e7500e3b
 ---> 9f0a2419d840
Successfully built 9f0a2419d840
Successfully tagged myapp:latest

我们看一下我们的images,发现多了一个myapp,这就是我们新构建的新镜像。

[root@docker myapp]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
myapp               latest              9f0a2419d840        40 seconds ago      349MB
<none>              <none>              0b8122b9d710        5 minutes ago       349MB
tomcat              8.0.22              76d235c1c377        5 years ago         349MB

然后就是我们熟悉的run镜像,让我们的容器飞起来!

[root@docker myapp]# docker run -p 8080:8080 --name myapp-test -d myapp
01cfb43db437f444f864b10ed4463c9a97b92a97254a03686fb20421b37f401e

去访问自己的IP:8080
在这里插入图片描述

总结

简单的Dockerfile很容易,还有其他几个命令没有涉及到,我们的重点是能看懂Dockerfile!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值