创建镜像命令
docker build -t [镜像name]:[镜像tag] -f [dockerfile路径] [资源目录]
执行该命令后,docker会将[资源目录]打包,之后在dockerfile中使用COPY命令,就可以从资源目录往docker中拷贝东西了。
dockerfile不需要包含在资源目录里,但是dockerfile里要COPY的资源一定要在资源目录里。
dockerfile
dockerfile命令详解:
https://www.cnblogs.com/panwenbin-logs/p/8007348.html
关键命令:
COPY 从宿主的资源目录向docker中拷贝文件
RUN 在docker中执行命令,每一个RUN命令是一层
WORKDIR 在docker中设置工作目录,可以有多个该命令,相当于cd
FROM 引用其他镜像 https://www.liangzl.com/get-article-detail-16554.html
docker分层build
在《Docker概念简介》 中我们提到,你可以简单理解Docker的镜像是一个压缩文件,其中包含了你需要的程序和一个文件系统。其实这样说是不严谨的,Docker镜像并非只是一个文件,而是由一堆文件组成,最主要的文件是 层。
Dockerfile 中,大多数指令会生成一个层,比如下方的两个例子:
# 示例一,foo 镜像的Dockerfile # 基础镜像中已经存在若干个层了 FROM ubuntu:16.04 # RUN指令会增加一层,在这一层中,安装了 git 软件 RUN apt-get update && apt-get install -y --no-install-recommends git && apt-get clean && rm -rf /var/lib/apt/lists/*
# 示例二,bar 镜像的Dockerfile FROM foo # RUN指令会增加一层,在这一层中,安装了 nginx RUN apt-get update && apt-get install -y --no-install-recommends nginx && apt-get clean && rm -rf /var/lib/apt/lists/*
假设基础镜像 ubuntu:16.04
已经存在5层,使用第一个Dockerfile打包成镜像 foo,则foo有6层,又使用第二个Dockerfile打包成镜像bar,则bar中有7层。