What is Docker File?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
How to use Docker File!
Docker build
Usage: docker build [OPTIONS] PATH | URL | -Build an image from a DockerfileOptions:--add-host list Add a custom host-to-IP mapping (host:ip)--build-arg list Set build-time variables--cache-from strings Images to consider as cache sources--cgroup-parent string Optional parent cgroup for the container--compress Compress the build context using gzip--cpu-period int Limit the CPU CFS (Completely FairScheduler) period--cpu-quota int Limit the CPU CFS (Completely FairScheduler) quota-c, --cpu-shares int CPU shares (relative weight)--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)--disable-content-trust Skip image verification (default true)-f, --file string Name of the Dockerfile (Default is'PATH/Dockerfile')--force-rm Always remove intermediate containers--iidfile string Write the image ID to the file--isolation string Container isolation technology--label list Set metadata for an image-m, --memory bytes Memory limit--memory-swap bytes Swap limit equal to memory plus swap:'-1' to enable unlimited swap--network string Set the networking mode for the RUNinstructions during build (default "default")--no-cache Do not use cache when building the image-o, --output stringArray Output destination (format:type=local,dest=path)--platform string Set platform if server is multi-platformcapable--progress string Set type of progress output (auto, plain,tty). Use plain to show container output(default "auto")--pull Always attempt to pull a newer version ofthe image-q, --quiet Suppress the build output and print imageID on success--rm Remove intermediate containers after asuccessful build (default true)--secret stringArray Secret file to expose to the build (onlyif BuildKit enabled):id=mysecret,src=/local/secret--security-opt strings Security options--shm-size bytes Size of /dev/shm--squash Squash newly built layers into a singlenew layer--ssh stringArray SSH agent socket or keys to expose to thebuild (only if BuildKit enabled) (format:default|<id>[=<socket>|<key>[,<key>]])-t, --tag list Name and optionally a tag in the'name:tag' format--target string Set the target build stage to build.--ulimit ulimit Ulimit options (default [])
Docker 指令
| 命令 | 解释 |
|---|---|
| FROM | 基础镜镜像,一切从这里开始构建 |
| MAINTAINER | 镜像是谁写的,姓名+邮箱 |
| RUN | 镜像构建的时候需要运行的命令 |
| ADD | 步骤:tomcat镜像,这个tomcat压缩包!添加内容 |
| WORKDIR | 镜像的工作目录 |
| VOLUME | 挂载的目录 |
| EXPOSE | 保留端口配置CMD指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代 |
| ENTRYPOINT | 指定这个容器启动的时候要运行的命令,可以追加命令 |
| ONBUILD | 当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令。触发指令。 |
| COPY | 类似ADD,将我们文件拷贝到镜像中 |
| ENV | 构建的时候设置环境变量。 |
Docker history
查看镜像构建历史
Usage: docker history [OPTIONS] IMAGEShow the history of an imageOptions:--format string Pretty-print images using a Go template-H, --human Print sizes and dates in human readable format(default true)--no-trunc Don't truncate output-q, --quiet Only show image IDs
构建自己的CentOS
FROM centosLABEL author="HelloChen" \version=1.0 \description="This text illustrates that label-values can span multiple lines."ENV MYPATH=/usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y install net-toolsEXPOSE 80CMD echo ${MYPATH}CMD /bin/bash
