什么是 Dockerfile?
Dockerfile 是由一系列命令和参数构成的一个用来构建镜像的脚本文件,这些命令应用于基础镜像并最终创建出一个新的镜像。
常用命令
命令 | 作用 |
---|---|
FROM [镜像名]:[镜像标签] | (必须)声明一个基础镜像,这个镜像最好是docker已有镜像,否则会下载不存在的镜像 |
MAINTAINER [作者] | (非必须)声明镜像的创建者 |
WORKDIR [容器运行路径] | 指定容器的目录, 容器启动时执行的命令会在该目录下执行 |
ENY [参数key] [参数value] | 设置环境变量(可以写多条) |
RUN [命令] | (核心)定义要运行的命令(可以写多个) |
ADD [源文件路径] [目标路径] | 将宿主机的文件复制到容器内,如果是压缩文件,复制后自动解压 |
COPY [源文件路径] [目标路径] | 和ADD相似,但是如果是压缩文件,复制后不解压 |
案例:创建一个带有jdk环境的CentOS镜像
以下内容用于理解上述命令,尚未测试
准备:装好docker的linux环境,centos7镜像,jdk安装包
- 创建一个存放jdk安装包的目录
mkdir -p /usr/local/docker-jdk8
- 将jdk安装包移入(或拷贝)上述目录
mv jdk-8u161-linux-x64.tar.gz /usr/local/docker-jdk8
- 进入安装包目录,并创建Dockerfile文件(文件名必须为Dockerfile),这里通过vim创建
cd /usr/local/docker-jdk8
vim Dockerfile
按i开始编写如下内容(按需修改)
# 指定基础镜像,jdk是运行在centos上的,所以指定centos:7,最好提前下载好centos镜像
FROM centos:7
# 记录镜像创建者
MAINTAINER gjy
# 指定容器的目录
WORKDIR /usr/local
# 定义执行的命令:创建一个文件夹用于安装jdk
RUN mkdir /usr/local/java
# 把当前目录(Dockerfile所在的目录)的jdk安装包解压到上述文件夹
ADD jdk-8u161-linux-x64.tar.gz /usr/local/java
# 设置环境变量,jdk1.8.0_161是安装包解压后得到的文件夹名
ENV JAVA_HOME /usr/local/java/jdk1.8.0_161
ENV PATH $JAVA_HOME/bin:$PATH
完成之后输入:wq保存退出,回到/usr/local/docker-jdk8路径
该路径下现在有jdk-8u161-linux-x64.tar.gz和Dockerfile两个文件
-
下面开始构建镜像
docker build -t='centos7-jdk8' .
-t='centos7-jdk8'
定义镜像的名称为centos7-jdk8,.
表示Dockerfile所在的位置 -
完成后查看镜像
docker images