专业的编程技术博客社区

网站首页 > 博客文章 正文

跟我学docker-Dockerfile的使用(3)

baijin 2024-09-23 03:50:48 博客文章 4 ℃ 0 评论

什么是 Dockerfile?

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

例如dockerfile的文件内容如下:

FROM xx
RUN xx

FROM和RUN指令的作用:

  1. shell格式RUN <命令行命令> # <命令行命令> 等同于,在终端操作的 shell 命令。
  2. exec格式RUN ["可执行文件", "参数1", "参数2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline 注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。如果多个shell命令,可以使用:以&&符号连接命令,这样执行后,只会创建 1 层镜像。

其他的一些常见命令:

MAINTAINER
  用来写备注信息,例如作者、日期等。
COPY
  复制文件进入镜像(只能用相对路径,不能用绝对路径)
ADD
  复制文件进入镜像(可以用绝对路径,假如是压缩文件会解压)
WORKDIR
  指定工作目录,假如路径不存在会创建路径
ENV
  设置环境变量
EXPOSE
  暴露容器端口到宿主机
ENTRYPOINT
  在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
CMD
  在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
  容器启动后执行默认的命令或者参数,允许被修改

制作dockerfile的过程

1.创建Dockerfile文件

在任意目录下创建新建一个名为Dockerfile文件,并在文件内添加以下内容:

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /tmp/1.txt

2.执行Dockerfile文件

在该Dockerfile文件同级目录中执行如下命令:

docker build -t nginx:v3 .

最后一个点指的是上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包

制作dockerfile的好处

一键构建服务器所需要的环境,达到快速部署项目的目的,例如使用Dockerfile製作一个jdk8的服务镜像环境:

FROM centos:7
#指明该镜像的作者和电子邮箱
MAINTAINER xxx "xxx@qq.com"
#在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/docker
#一个复制命令,把jdk安装文件复制到镜像中,语法 ADD SRC DEST ,ADD命令具有自动解压功能
ADD jdk-8u201-linux-x64.tar.gz /usr/local/docker
#配置环境变量,此处目录为tar.gz包解压后的名称,需提前解压知晓:
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_201
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#设置启动命令
CMD ["java","-version"]

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表