转载

Dockerfile

  • 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

  • Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

常用命令

命令 作用
FROM image:tag 指定基础镜像,有点继承的意思
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量,可以设置多条,比如 ENV VERSION=1.0
RUN command 核心命令,多个命令用&&连接即可
ADD source_dir/file dest_dir/file 将宿主机的文件负复制到容器内,如果是一个压缩文件,将会自动解压缩
COPY source_dir/file dest_dir/file 和ADD命令类似,但是不能自动解压缩
WORKDIR path_dir 指定当前的工作目录,由于分层的概念,每一个命令的工作目录都不同,因此需要使用该命令显示指定工作目录
CMD args 在构建容器的时候使用,会docker run 后的args覆盖
ENTRYPOINT args 和CMD相似,但是不会被docker run后的args覆盖
VOLUME 将本地文件夹挂载到容器中

配置镜像加速

vim /etc/docker/daemon.json
{
        "registry-mirrors":["https://rxx4pnmv.mirror.aliyuncs.com"]
}

构建简单的JDK镜像

  • 新建一个 Dockerfile
# 初始镜像,默认拉去lastest的
FROM centos
# 指定镜像的构建者
MAINTAINER chenjiabing666
# 切换工作目到usr,这个是容器中的目录
WORKDIR /usr
# 新建 /usr/local/java目录
RUN mkdir /usr/local/java
# 添加本地的jdk到容器中并且解压
ADD jdk-8u172-linux-x64.tar.gz /usr/local/java/
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib;$JAVA_HOME/jre/lib
ENV PATH $PATH:$JAVA_HOME/bin
docker build -t jdk8 .
docker run --name jdk -di jdk8
原文  http://chenjiabing666.github.io/2018/12/30/Dockerfile/
正文到此结束
Loading...