Docker应用中,起初肯定是使用已有镜像,来完成容器的应用。随着应用的深入,不可避免的,就会出现个性化的需求,这时,就需要构建属于我们自己的镜像。
Docker提供了docker build
命令,用于使用Dockerfile
创建镜像。
语法
docker build [OPTIONS] PATH | URL | -
语义
使用Dockerfile创建镜像,可以自定义镜像构建过程。
参数
参数名 | 参数描述 |
---|---|
–add-host | 增加自定义HOST到IP的映射 |
–build-arg | 设置构建时参数 |
–cache-from | 作为缓存源的镜像 |
–cgroup-parent | 可选的容器的父cgroup |
–compress | 使用gzip压缩构建上下文 |
–cpu-period | 限制CPU CFS(完全公平调度程序)周期 |
–cpu-quota | 限制CPU CFS(完全公平调度程序)配额 |
–cpu-shares , -c | CPU份额(相对权重) |
–cpuset-cpus | 允许执行的CPU(0-3,0,1) |
–cpuset-mems | 允许执行的MEMs(0-3,0,1) |
–disable-content-trust | 跳过镜像验证,默认为true |
–file , -f | Dockerfile的名称(默认为"PATH/Dockerfile") |
–force-rm | 始终移除中间容器 |
–iidfile | 将镜像ID写入文件 |
–isolation | 容器隔离技术 |
–label | 设置镜像元数据 |
–memory , -m | 限制内存大小 |
–memory-swap | 交换限制等于内存加交换:’-1’以启用无限制交换 |
–network | 在生成期间为运行指令设置网络模式,1.25+ |
–no-cache | 构建镜像时不使用缓存 |
–output , -o | 输出目的地(格式:type=local,dest=path),1.40+ |
–platform | 如果服务器支持多平台,则设置平台,1.38+ |
–progress | 设置进度输出的类型(auto、plain、tty),使用纯文本显示容器输出,默认为auto |
–pull | 总是尝试拉取镜像的最新版本 |
–quiet , -q | 成功时取消生成输出并打印镜像ID |
–rm | 成功生成后删除中间容器,默认为true |
–secret | 要向生成公开的机密文件(仅在启用BuildKit时):id=mysecret,src=/local/Secret,1.39+ |
–security-opt | 安全选项 |
–shm-size | /dev/shm的大小 |
–squash | 将新构建的层压缩到单个新层中,1.25+ |
–ssh | 要向生成公开的SSH代理套接字或密钥(仅当启用BuildKit时) |
–stream | 流连接到服务器以协商生成上下文,1.31+ |
–tag , -t | 名称和可选的’name:tag’格式 |
–target | 将目标生成阶段设置为生成。 |
–ulimit | Ulimit选项 |
示例
· 当前目录dockerfile,-t指定镜像名称和标签。
自建目录securitit/dockerfile/,在目录下新建dockerfile,写入简单的构建命令。
FROM nginx
CMD /bin/bash
securitit/dockerfile/目录下输入构建命令,用来构建基于nginx:latest的自定义镜像。
docker build -t securitit-nginx-build:1.0.0.1 .
· -f指定dockerfile路径、-t指定镜像名称和标签。
复用上例的dockerfile文件,增加-f参数指定dockerfile文件路径进行构建。
docker build -f /securitit/dockerfile/dockerfile -t securitit-nginx-build:1.0.0.2 .
· -f指定dockerfile路径、-t指定镜像名称和标签、–build-arg指定构建时参数。
修改上例的dockerfile,增加参数应用部分内容。
FROM nginx
ARG NG_VN
RUN echo "${NG_VN}"
CMD /bin/bash
securitit/dockerfile/目录下输入构建命令,用来构建基于nginx:latest的自定义镜像。
docker build -f /securitit/dockerfile/dockerfile --build-arg NG_VN=SecurititV101 -t securitit-nginx-build:1.0.0.3 .
总结
dokcer build的参数较多,本文没有一一例举,只是例举了几个常用的参数,其余的参数,可以参照本文提供的表格(表格翻译自官网)。在Docker系列后续的博文中,会涉及到其余参数的应用,可以持续关注本博。
若文中存在错误和不足,欢迎指正!