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

一、思考❓❔

1.什么是image镜像?

docker image

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

2.Dockerfile又是什么呢?

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


二、创建Dockerfile🔨🔨

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

1.添加注释

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

2.FROM💪🏽💪🏽

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

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

  • 一般为Dockerfile文件中的第一个指定

常用格式:

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

例如:

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

3.LABEL

  • 用于指定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."

4.COPY

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

常用格式:

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

例如:

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

5.WORKDIR

  • 用于设置容器的当前工作目录
  • 类似于Linux中的cd命令
  • 如果指定的目录路径不存在,则会自动创建

常用格式:

WORKDIR /path/to/workdir

例如:

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

6.RUN

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

常用格式:

RUN <命令>

例如:

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


三、总结💡💡

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

posted @ 2020-01-21 10:43  可优  阅读(437)  评论(0编辑  收藏  举报