Dockerfile常用指令及使用
Dockerfile常用指令及使用
1. dockerfile介绍
2. Dockerfile常用指令
指令 | 描述 |
---|---|
FROM | 构建新镜像是基于哪个镜像 |
MAINTAINER | 进行维护者姓名或邮箱地址 |
RUN | 构建镜像时运行的shell命令 |
ENV | 设置环境变量 |
USER | 为RUN、CMD和ENTRYPOINT执行命令指定运行用户 |
EXPOSE | 声明容器运行的服务端口 |
HEALTHCHECK | 容器中服务器健康检查 |
WORKDIR | 为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录 |
ENTRYPOINT | 运行容器时执行,如果有多个CMD指令,最后一个生效 |
CMD | 运行容器时执行,如果有多个CMD指令,最后一个生效 |
ADD | 添加文件包或文件,带有解压的功能 |
COPY | 单纯复制文件,或文件夹 |
LABEL | 标签 |
2.1 FROM指令
-
基本语法
FROM <image> FROM <image>:<tag>
-
使用案例
# base image FROM centos
2.2 MAINTAINER指令
-
基本语法
MAINTAINER <name>
-
使用案例
# MAINTAINER MAINTAINER shichao@scajy.cn
2.3 run指令
-
基本语法
run <要执行的命令> run <command> (shell模式) run [ "executable", "param1", "param2" ] (exec模式)
-
使用案例
run <command> (shell模式) /bin/sh -c command CMD /bin/sh -c 'nginx -g "daemon off;"' run [ "executable", "param1", "param2" ] (exec模式) run ["/bin/bash" , "-c", "nginx -g daemon off" ]
2.4 expose指令
-
基本语法
expose <prot> [<port>...]
-
使用案例
EXPOSE 80
2.5 cmd命令
-
基本语法
cmd [ "executable" , "param1" , "param2" ] (exec模式) cmd command param1 param2 (shell模式)
-
使用案例
CMD /bin/sh -c 'nginx -g "daemon off;"'
2.6 entrypoint指令
-
基本语法
cmd [ "executable" , "param1" , "param2" ] (exec模式) cmd command param1 param2 (shell模式)
-
使用案例
ENTRYPOINT ["nginx"]
2.7 ADD指令
-
基本语法
ADD <"src"> ...<dest> ADD["<src>"..."<dest>"] (适用于文件路径中有空格的情况) COPY <src>...<dest> COPY [ "<src>"..."<dest>" ] (适用于文件路径中有空格的情况)
-
使用案例
ADD nginx-1.12.2.tar.gz /usr/local/src COPY index.html /usr/local/nginx/html/ #执行结果 [root@1-230 nginx]# curl 192.168.0.230:8082 ni hao yello
2.8 VOLUME指令
-
基本语法
volume ["/data"]
2.9 workdir指令
-
基本语法
WORKDIR /path/to/workdir
-
使用案例
# change dir to /usr/local/src/nginx-1.12.2 WORKDIR /usr/local/src/nginx-1.12.2
2.10 user指令
-
基本语法
USER NGINX USER user USER uid USER user:group USER uid:gid USER user:gid user uid:group
2.11 ONBUILD指令
-
基本语法
ONBUILD [INSTRUCTION]
3. 构建镜像
-
docker build镜像
Usege:docker build [OPTIONS] PATH | URL | - [flags] OPTIONS: -t:--tag list #镜像名称 -f:--flie string #指定dockerfile文件位置 案例: docker build . docker build -t test/v1 . docker build -t test/v1 -f /path/Dockerfile docker build -t test/v1 http://xxxx.example.com/Dockerfile