docker从零开始入门(六)Dockerfile的使用

126 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

案例1

需求:创建一个镜像(基于tomcat)里面要有一个index.html,并写入Hello j Docker

1,在宿主机创建一空白目录

mkdir -p /usr/local/docker/demo1

2、在该目录下,创建一文件Dockerfile

vim Dockerfile

3 、其内容为:

FROM tomcat //指定tomcat最新版本镜像
RUN echo 'Hello Docker'>/usr/local/tomcat/webapps/ROOT/index.html
这个 Dockerfile 很简单,一共就两行。涉及到了两条指令,FROM 和 RUN。
4 、构建镜像
docker build -t demo.
5 、运行镜像所在容器
docker run --rm --name demo1-8080 -p 8080:8080 -d demo
FROM centos
RUN apt-get update \
&& apt-get install -y gcc libc6-dev make \
&& wget http://download.redis.io/releases/redis-4.0.1.tar.gz \
&& tar xzf redis-4.0.1.tar.gz \
&& cd redis-4.0.
mkdir -p /usr/local/docker/demo
vim Dockerfile

访问浏览器即可成功该问

构建镜像Build

回到之前定制的 tomcat 镜像的 Dockerfile 来。现在我们明白了这个Dockerfile 的内容,那么让我们来构建这个镜像 吧。

Dockerfile文件所在目录执行:

 docker build -t demo. 

从命令的输出结果中,我们可以清晰的看到镜像的构建过程。

docker build 命令进行镜像构建。其格式为:

docker build [选项] <上下文路径/URL/->
docker build -t demo1. //. 代表Dockerfile上下文路径
· -t :指定要创建的目标镜像名
·. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

在这里我们指定了最终镜像的名称- t demo1,构建成功后,我们可以像之前运行tomcat 那样来运行这个镜像, 其结果会和 tomcat一样。(如果有版本号名称:demo1:01)

案例2

基于上一个镜像(基于tomcat)外部复制一个文件(图片),并复制到容器中并能访问

记得上传图片到/usr/local/docker/demo1目录下

基于如上修改Dockerfile

FROM tomcat //指定tomcat最新版本镜像
WORKDIR /usr/local/tomcat/webapps/ROOT/ //切换到该目录下
RUN rm -rf * //将当前目录的文件都删掉
COPY 1.png /usr/local/tomcat/webapps/ROOT/
RUN echo 'Hello qfnj Docker'>/usr/local/tomcat/webapps/ROOT/index.html

WORKDIR用来切换工作目录的。而不是用RUN

构建镜像

docker build –t 镜像名 . //Dockerfile上下文路径
COPY 格式:
• COPY <源路径>... <目标路径>COPY ["<源路径1>",... "<目标路径>"]
和 RUN 指令一样,也有两种格式,一种类似于命令行,一种类似于函数调用。
COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置。比如:
COPY qfjy.png /usr/local/tomcat/webapps/ROOT/
<目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR指令来指定)。目标路径不需
要事先创建,如果目录不存在会在复制文件前先行创建缺失目录。
此外,还需要注意一点,使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。这个特性对于镜
像定制很有用。特别是构建相关文件都在使用 Git 进行管理的时候。
​

案例3

实际开发中,利用Dockerfile 将一个war包生成镜像的Dockerfile:

docker下创建项目工程名称

mkdir -p /usr/local/docker/exam
cd /usr/local/docker/exam

将桌面exam.zip复制到访目录下

cp exam-1.0-SNAPSHOT.zip /usr/local/docker/exam/

创建镜像文件Dockerfile

image.png

docker build -t exam .
docker run -it qfjy_exam bash