Dockerfile让你轻轻松松建立属于你的镜像(上)

1、思考❓❔

1.什么是image镜像?

<span style="color:rgb(230,3,130);font-size: 20px">docker image</span>java

  • 操做系统硬盘上的一个压缩文件系统
  • 拥有运行一个服务的整套资源配置信息
  • 相似于**“样板车”,没法在马路上正常行驶(未提供业务**)
  • 给image镜像**(“样板车”)**添加各类参数以后, 能够建立一个容器来提供业务

<br />linux

2.Dockerfile又是什么呢?

  • 建立docker image镜像的蓝图(指南)
  • 为一个建立镜像的文本文件,有规定的语法和格式要求
  • 须要哪些依赖?
    • 安装docker的系统(Windows或者Linux)
    • 相关安装教程可参考做者之前的文章

<br />docker

<br />app

2、建立Dockerfile🔨🔨

  • 建立一个以**“Dockerfile”**命名的文件

<span style="color:rgb(230,3,130);font-size: 20px">1.添加注释</span>

  • 经过#在命令所在行的上方或下方添加注释
# 这里添加注释(#空格,跟上具体的注释)
添加命令(命令忽略大小写,为了区分,推荐命令使用大写)

<br />学习

<span style="color:rgb(230,3,130);font-size: 20px">2.FROM💪🏽💪🏽</span>

  • 用于指定base image父镜像(在哪个镜像的基础上,建立新的镜像)ui

  • 一个Dockerfile文件中必需要有一个FROM指令spa

  • 通常为Dockerfile文件中的第一个指定操作系统

经常使用格式:code

FROM <父镜像名>[:<tag版本>]

例如:blog

# 指定父镜像为jdk8,操做系统为alpine
FROM openjdk:8-alpine

<br />

<span style="color:rgb(230,3,130);font-size: 20px">3.LABEL</span>

  • 用于指定image镜像的元数据信息
  • 为key-value键值对的形式

经常使用格式:

LABEL <key>=<value> <key>=<value> <key>=<value> ...

例如:

# 添加image镜像的做者信息以及对当前镜像的功能描述
# a. maintainer和description为固定形式
# b. LABEL与maintainer之间要有空格
LABEL maintainer="KeYou <keyou100@qq.com>"
LABEL description="This is multi-stage build example."

<br />

<span style="color:rgb(230,3,130);font-size: 20px">4.COPY</span>

  • 用于从宿主机**(Dockerfile文件所在的电脑)**复制文件或目录到容器中

经常使用格式:

COPY <源文件或者目录> <容器中的目录>

例如:

# 复制当前目录下的Test.java文件到容器/usr/src/myapp/目录下
# a. 一个路径加/和不加/, 是有区别的
# 加/, 为目录
# 不加/, 为文件
# b. 若是容器中所指定的目录不存在, 会自动建立
COPY Test.java /usr/src/myapp/

<br />

<span style="color:rgb(230,3,130);font-size: 20px">5.WORKDIR</span>

  • 用于设置容器的当前工做目录
  • 相似于Linux中的cd命令
  • 若是指定的目录路径不存在,则会自动建立

经常使用格式:

WORKDIR /path/to/workdir

例如:

# 进入容器/usr/src/myapp/目录中
# myapp目录不存在,则会自动建立
WORKDIR /usr/src/myapp/

<br />

<span style="color:rgb(230,3,130);font-size: 20px">6.RUN</span>

  • 执行任何linux命令
  • 在image镜像当前层上方添加新的一层

经常使用格式:

RUN <命令>

例如:

# 执行命令
# 因为使用了openjdk 8父镜像,全部有java的安装环境
# 使用javac 编译java源文件
RUN javac Test.java

<br />

<br />

3、总结💡💡

  • 本文介绍了Dockerfile文件经常使用的操做指令上部分,下部分会在后续文章中呈现,敬请期待!
  • 对于想学习docker相关知识的读者, 能够持续关注做者的文章, 后续会推出更多教程
  • 本文为可优原创,有不足之处,请多指教!

相关文章
相关标签/搜索