【笔记】构建docker镜像

本文介绍了Dockerfile的基本结构和关键指令,包括FROM选择基础镜像,COPY复制文件,RUN执行shell命令,ARG和ENV变量设置,以及EXPOSE暴露端口。Dockerfile的使用和dockerbuild命令对于创建高效镜像至关重要。
摘要由CSDN通过智能技术生成

什么是Dockerfile

Dockerfile是一个纯文本文件,里面记录了一系列构建命令,每个指令都会生成一个Layer,Docker顺序执行这个文件里的步骤最终就会创建出一个新的镜像。

编写Dockerfile

FROM

构建镜像的第一条指令必须是FROM,FROM作用是用于选择基础镜像。

eg:

FROM alpine:3.15 #选择Alpine镜像
FROM ubuntu:bionic #选择Ubuntu镜像

COPY

如果需要将一些文件打包到镜像中(例如一些源码、配置)。可以使用COPY命令,用法类似Linux cp命令,但是复制的源文件必须是“构建上下文”的路径,不能随意指定文件。“构建上下文”是指docker build执行时所在的目录。

eg:

COPY ./aa.xml /tmp/aa.xml #将上下文中aa.xml复制到镜像的/tmp目录下
COPY /etc/host /tmp #错误,不能使用上下文之外的文件

RUN

RUN指令包含很多shell指令。Dockerfile里一条指令只能是一行,因此RUN指令每行末尾使用续行符 \,命令之间需要使用 && 来连接。如果shell命令过长,可以将这些命令集中到一个脚本文件中,用COPY命令复制到镜像中使用RUN来执行

eg:

COPY ./setup.sh /tmp/ # 复制脚本到tmp目录
RUN cd /tmp && chmod +x setup.sh \  #到tmp目录,添加执行权限
    && ./setup.sh && rm setup.sh # 执行脚本并在执行后删除

ARG 和 ENV

这两条指令都可以用来创建变量,实现参数化运行。它们的区别在于ARG创建的变量在镜像构建过程中可见,容器运行是不可见。ENV 镜像构建以及容器运行时都可见。

eg:

ARG USER="root"
ENV USER="root"

EXPOSE

EXPOSE 指令用来暴露对外服务的端口号

EXPOSE 443 # 默认tcp协议
EXPOST 53/udp # 指定udp协议

 每条指令都会生产一个镜像层,Dockerfile中不要滥用指令,尽量精简合并,避免镜像臃肿不堪。

docker build

Dockerfile 必须经过docker build 才能生效。

docker打包时会将上下文中所有文件都进行打包,为了避免不必要的文件上次打包影响打包效率,可以在“构建上下文”中创建 .dockerignore文件,排除不需要的文件。该文件语法与.gitignore类似。

 eg:

#docker ignore
*.swp
*.sh

docker build 可以使用 -f 显式指定Dockerfile文件,如果不指定这个参数会默认找到当前目录下Dockerfile文件。

docker build 使用 -t 指定镜像标签,这样构建完成后会自动为镜像添加名字。

eg:

docker build -f ./Dockerfile -t my_image:1.0.0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值