Docker之Dockerfile

本文详细介绍了Dockerfile的用途、基本结构、常用指令及其区别,提供了Dockerfile的实例,并解析了`docker build`命令的使用。Dockerfile用于构建自定义Docker镜像,通过FROM指定基础镜像,RUN执行命令,CMD设置启动命令,以及ADD和COPY添加文件。在构建过程中,每个命令都会生成一个新的镜像层。了解并熟练掌握Dockerfile的编写,对于高效管理和部署应用至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker之Dockerfile

一 Dockerfile 简介

• Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件

• 利用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像(定制镜像)

二 Dockerfile 示例与使用

Dockerfile使用流程

1、Dockerfile命名:Dockerfile
2、Dockerfile是由指令组成(Dockerfile指令必须大写)
3、实现基础环境:FROM
4、可执行命令:RUN
5、启动命令(指定命令必须运行在前台):CMD
6、开始构建:docker build -t [镜像名称] .
7--no-cache是禁止构建使用缓存

dockerfile常用指令

命令	                  作用
FROM: 			指定基础镜像
RUN:			执行一个命令
CMD:			设置一个启动命令
WORKDIR:		设置工作目录
ADD:			添加文件到镜像
COPY:			复制文件到镜像
ENV:			设置容器内默认的环境变量

ADD和COPY之间的区别
	1、ADD 支持解压(tar类型的压缩包),COPY不支持
	2、ADD支持网络下载(不支持解压),COPY不支持
	3、ADD和COPY : 当镜像中目录不存在时,需要加/结尾。当镜像中目录存在时,则没有区别。

Dockerfile参考示例

vim dockerfile
    FROM python:3.6
    MAINTAINER UPython
    EXPOSE 8080
    ADD ./requirement.txt /home/
    RUN pip install -r /home/requirement.txt -i https://pypi.douban.com/simple/ 
    RUN pip install uwsgi -i https://pypi.douban.com/simple/
    VOLUME ["/home"]
    WORKDIR /home/django_test
    CMD ["uwsgi", "--ini", "/home/django_test/uwsgi.ini"] 

Dockerfile使用命令 – docker build

# 作用:
	根据dockerfile创建镜像
# 命令格式:
	docker build [OPTIONS] PATH | URL | -
# 命令参数:
	PATH		Dockerfile所在路径(文件夹路径),文件名必须是Dockerfile
	URL		Dockerfile所在URL地址
	
	OPTIONS:
		-t, --tag list		为镜像设置名称和tag
		-f, --file string		指定Dockerfile的路径(这是可以使用其他名称命名Dockerfile)
		--build-arg  给dockerfile文件传参

三 Dockerfile 特征

查看官方的Dockerfile:https://github.com/docker-library/docs

Dockerfile 构建特征

在这里插入图片描述

•Dockerfile必须具备一个FROM命令来进行构建

•每一个Dockerfile命令都会构建一层镜像(本质上是每一层都会启动一个容器,执行完命令后,将容器进行提交后,产生新的镜像层)

•通过查看下载下来的镜像,发现历史层信息的层ID是missing,其实是因为原本的层id只存在于构建镜像的宿主机上,一旦转移镜像后,历史层消息中将只保留最新一层的ID

四 Dockerfile 命令概述

Dockerfile 命令概述

FROM: 指定基础镜像
RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build
CMD: 添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改。
ENTRYPOINT: 同CMD,但这个一定会被执行,不会被覆盖修改。
:为镜像添加对应的数据。
MLABELAINTAINER: 表明镜像的作者。将被遗弃,被LABEL代替。
EXPOSE: 设置对外暴露的端口。
ENV: 设置执行命令时的环境变量,并且在构建完成后,仍然生效
ARG: 设置只在构建过程中使用的环境变量,构建完成后,将消失
ADD: 将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件
COPY: 将本地文件或目录拷贝到镜像的文件系统中。
VOLUME: 添加数据卷
USER: 指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
WORKDIR: 设置默认工作目录
ONBUILD: 如果制作的镜像被另一个Dockerfile使用,将在那里被执行Docekrfile命令
STOPSIGNAL: 设置容器退出时发出的关闭信号。
HEALTHCHECK: 设置容器状态检查。
SHELL: 更改执行shell命令的程序。Linux的默认shell是[/bin/sh”,-c”],Windows的是[“cmd”,/S”,/C”]

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go&Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值