Dockerfile入门实战

148 阅读3分钟

Dockerfile的基本结构

Dockerfile是一个包含用于组合镜像的命令的文本文档。可以使用在命令行中调用任何命令。Docker通过读取Dockerfile中的指令自动生成镜像。

docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

Dockerfile由一行行命令语句组成,并且支持以#开头的注释行

Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

Dockerfile文件说明

Docker以从上到下的顺序运行Dockerfile的指令。为了指定基本映像,第一条指令必须是FROM。一个声明以#字符开头则被视为注释。可以在Docker文件中使用 RUN , CMD , FROM , EXPOSE , ENV 等指令。

Dockerfile常见命令

命令说明
FROM指定基础镜像,必须为第一个命令
MAINTAINER维护者(作者)信息
ENV设置环境变量
RUN构建镜像时执行的命令
CMD构建容器后调用,也就是在容器启动时才进行调用。
ENTRYPOINT指定运行容器启动过程执行命令,覆盖CMD参数。ENTRYPOINT与CMD非常类似,不同的是通过docker run执行的命令不会覆盖ENTRYPOINT,而docker run命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT。Dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后的ENTRYPOINT指令。
ADD将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
COPY功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
WORKDIR工作目录,类似于cd命令
ARG用于指定传递给构建运行时的变量
VOLUMN用于指定持久化目录
EXPOSE指定于外界交互的端口
USER指定运行容器时的用户名或UID,后续的 RUN也会使用指定用户。使用USER指定用户时,可以使用用户名、UID或GID,或是两者的组合。当服务不需要管理员权限时,可以通过该命令指定运行用户。并且可以在之前创建所需要的用户

案例实战

修改mysql官网镜像时区

可以使用IDEA来编写,装了docker插件后编写Dockerfile文件会有提示

  1. 编写Dockerfile文件
FROM mysql:5.7.31
MAINTAINER mysql from date UTC by Asia/Shanghai "laosiji@lagou.com"
ENV TZ Asia/Shanghai
  1. 将文件放在linux里面
  2. 进行build

docker build命令可以用来使用Dockerfile创建镜像

语法:

docker build [OPTIONS] PATH | URL | - 

常用参数:

  • --build-arg=[] :设置镜像创建时的变量
  • -f:指定要使用的Dockerfile路径
  • --rm:设置镜像成功后删除中间容器
  • --tag、-t:镜像的名字及标签,通常是name:tag的格式或者name格式

执行命令:

docker build --rm -t lagou/mysql:5.7 .

注意:最后的“点”代表在当前目录下找Dockerfile文件。

  1. 查看是否构建成功

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情