Dockerfile编写入门 - ZhangTory's NoteBlog - 张耀誉的笔记博客

Dockerfile编写入门

整理dockerfile编写的常见命令。

什么是dockerfile

用于生成自定义镜像的脚本。
由一系列命令和参数构成的脚本,通过该脚本可以创建出一个新的镜像。
可为整个团队提供一个完全一致的开发环境。在部署时可以实现无缝移植。

常用命令

FROM image_name:tag 定义使用哪个基础镜像,如果基础镜像不存在则会从仓库拉取该镜像。不写tag为latest。
MAINTAINER user_name 镜像创建者(目前已不推荐使用)

RUN command 命令,运行shell语句。
使用方式有2种,例如:

RUN yum install -y vim
RUN ["yum","install","-y","vim"]

ENV key value 设置环境变量,或用于指定一个全局参数

ENV JAVA_HOME /root/jdk8/bin:$PATH

EXPOSE 当前容器堆外暴露出的端口号。必须要暴露才能-p做端口映射,可以暴露多个端口。

EXPOSE 3306
EXPOSE 3307

ADD source_dir/file dest_dir/file 将宿主机文件复制到容器内,如果是压缩文件,复制后会自动解压。多用于将程序写入镜像。

ADD a.tar.gz /root  会将a.tar.gz解压后的结果复制到/root

COPY source_dir/file dest_dir/file 同ADD,但是压缩文件不会解压。多用于将程序写入镜像。

COPY a.txt /root/data  将Dockerfile目录下的a.txt文件拷贝到镜像的/root/data文件夹下。

ADD url 下载url的文件。

ADD http://baidu.com/a.txt
ADD http://baidu.com/a.txt /root/baidu

WORKDIR path_dir 命令执行的工作目录,且为进入命令行后的工作目录,如果不存在该目录则会自动创建。默认为/。可以写多个,相对路径会基于上一次路径执行。

WORKDIR /root

VOLUME ["/root","/opt"] 定义容器可以挂载到宿主机的目录

ENTRYPOINT command param1 param2 ... 指定容器启动时执行命令,可以写多个。

ENTRYPOINT ["java", "-jar", "a.jar"]

ARG key vaule 生命周期为构建时的参数。
可以在命令中修改,以构建不同的镜像。

docker build -t test --build-arg testarg=123 .

LABEL key="value" k2="v2" ... 给镜像打标签.

ONBUILD <以上任意参数> 其他基于本镜像的镜像构建时执行的内容

HEALTHCHECK 健康检查

通过Dockerfile构建镜像命令:

docker build -t 镜像名:tag .

添加新评论

电子邮件地址不会被公开,评论内容可能需要管理员审核后显示。