Dockerfile

Docker 通过读取 Dockerfile 中的指令来构建镜像。Dockerfile 是一个文本文件,其中包含构建源代码的指令。

以下是最常见的指令类型:

操作说明描述
FROM <image> 为您的图像定义一个基础。
RUN <command> 在当前图像之上的新层中执行任何命令并提交结果。RUN还具有用于运行命令的 shell 形式。
WORKDIR <directory> 为Dockerfile 中其后的任何RUNCMDENTRYPOINTCOPY和指令设置工作目录。ADD
COPY <src> <dest> <src>从路径中的容器文件系统复制新文件或目录并将其添加到其中<dest>src在主机,dest在容器
CMD <command> 允许您定义基于此映像启动容器后运行的默认程序。每个 Dockerfile 只有一个CMD,当存在多个时,仅CMD考虑最后一个实例。

您可以使用命令的标志<something>.Dockerfile指定 Dockerfile 文件名

以下 Dockerfile 创建一个容器映像,其中安装了所有依赖项并自动启动您的应用程序。

# syntax=docker/dockerfile:1
FROM ubuntu:22.04

# install app dependencies
RUN apt-get update && apt-get install -y python3 python3-pip
RUN pip install flask==3.0.*

# install app
COPY hello.py /

# final configuration
ENV FLASK_APP=hello
EXPOSE 8000   #此镜像暴露的端口号
CMD ["flask", "run", "--host", "0.0.0.0", "--port", "8000"] #CMD指令设置从镜像运行容器时要执行的命令。

#CMD ["executable","param1","param2"](执行形式),"executable":可执行文件,如果省略此参数,则取变量ENTRYPOINT的值。

exec 形式,这是首选形式:

ENTRYPOINT ["executable", "param1", "param2"]

壳体形式:

ENTRYPOINT command param1 param2

Building

 docker build -t test:latest .    #-t指示镜像名称和标签   .表示 当前目录
docker build -f- PATH # 标准输入构建
 tar czf foo.tar.gz *
$ docker build - < foo.tar.gz   #tar包构建
$docker build --file test.Dockerfile - < foo.tar.gz #tar包构建,指定dockerfile文件名
$docker build https://github.com/user/myrepo.git #远程构建
 docker run -p 127.0.0.1:8000:8000 test:latest

多阶段构建

 

 

标签相当于注释,可以在构建文件中以键值对的形式存在。

 

posted @ 2024-07-05 05:07  wongchaofan  阅读(2)  评论(0编辑  收藏  举报