dockerfile 的作用:
构建镜像
***
[**官方文档**](https://docs.docker.com/v17.09/engine/reference/builder/#from)
---
### FROM
功能: 指定基础镜像
语法:
```shell
FROM <image> [AS <name>]
FROM <image> [:<tag>][AS <name>]
FROM <image> [@<digest>][AS <name>]
```
### RUN
功能 :在一个新层执行任意命令并提交结果,提交的结果将用于Dockerfile的下一个步骤,分层运行和提交符合Docker的核心概念
```shell
RUN <command>
RUN ["executable","param1","param2"]
例子
FROM alpine:latest
RUN echo "han" > 1.text
RUN ["cat", "1.text"]
```
### CMD
功能 :指令用于设置部署容器映像的实例时要运行的默认命令
注意: 一个Dockerfile 只能有一个有效的 CMD 指令,如果有多个CMD指令最后一个生效
```shell
CMD ["executable", "param1", "param2"] // exec 格式 首选格式
CMD ["param1", "param2"] // 为ENTRYPOINT 指定的参数
CMD executable param1 param2 // shell 格式
```
### EXPOSE
功能 : 在运行时监听指定的网络端口
```shell
EXPOSE <port> [<port>/<protocol>]
例子:
EXPOSE 3306/tcp
```
### ENV
功能 : 设置环境变量
```shell
ENV <key> <value>
ENV <key>=<value> ...
例子1:
ENV name="JJ" sex="woman"
例子2:
ENV name JJ
ENV SEX woman
```
### ADD
功能 : 复制发送文件到镜像
规则:
1. src 必须是内部语境的构建,只能以当前目录为基准
2. src 是URL并不以/结尾,则从URL下载文件复制到dest
3. src 是URL并不以/结尾,则从URL下载文件复制到dest/filename
4. src 是目录,复制目录全部内容到dest
```shell
ADD <src> <dest>
ADD ["<src>", ... "dest"]
例子:
ADD 1.txt /text/
ADD mydir /data/
src 可以是文件夹也可以是文件
```
### COPY
功能:复制新文件或目录<src>,并将他们添加到容器的文件系统dest中
与ADD相似
### ENTRYPOINT
功能: 配置将作为可执行文件运行的容器
```shell
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT executable param1 param2
例子:
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
```
### VOLUME
```
VOLUME /data
```
### WORKDIR
功能: 指定工作目录
```shell
WORKDIR /path/to/workdir
例子:
WORKDIR /var/www
```
让容器在后台运行
```shell
docker run -d -it ubuntu --name myubuntu
```
进入正在运行的container
```shell
docker exec -it myubuntu /bin/bash
```
有疑问加站长微信联系(非本文作者))