Dockerfile 定制容器镜像
dockerfile 执行顺序,从上往下逐步执行

镜像分类
- 1、基础镜像,例如:CentOS、Ubuntu、alpine
- 2、环境镜像,例如:jdk、php、go
- 3、项目镜像,将项目项目与环境镜像打包一起
Dockerfile 常用指令
| 指令 | 描述 |
|---|---|
| FROM | 构建新镜像是基于哪个镜像 |
| LABEL | 标签 |
| RUN | 构建镜像时运行的 Shell 命令 |
| COPY | 拷贝文件或目录到镜像中 |
| ADD | 解压压缩包并拷贝设置环境变量 |
| ENV | 设置环境变量 |
| USER | 为 RUN、CMD 和 ENTRYPOINT 执行命令指定运行用户 |
| EXPOSE | 声明容器运行的服务端口 |
| WORKDIR | 为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录 |
| CMD | 运行容器时默认执行,如果有多个 CMD 指令,最后一个生效 |
| ENTRYPOINT | 如果与 CMD 一起用,CMD 将作为 ENTRYPOINT 的默认参数,如果如果有多个 ENTRYPOINT 指令,最后一个生效 |
第一个 Dockerfile
创建一个文件夹,并进入文件夹
shell
mkdir itdachen
cd itdachen创建测试文件
shell
touch a.txt
touch b.txt
tar zcvf b.tar.gz b.txt创建 Dockerfile
shell
vi DockerfileDockerfile 文件文件内容
shell
FROM centos:7
LABEL maintainer itdachen
RUN yum install gcc -y
COPY a.txt /opt
ADD b.tar.gz /opt
ENV ABC=123
EXPOSE 80
WORKDIR /usr/local
CMD ["sleep", "360000"]docker build 构建镜像
shell
docker build [OPTIONS]PATH|URL|-[flags]- OPTIONS -t, --tag list #镜像名称 -f, --file string # 指定 Dockerfile 文件位置
案例
- docker build -t shykes/myapp .
- docker build -t shykes/myapp -f /path/Dockerfile/path
- docker build -t shykes/myapp http://www.xxx.com/Dockerfile
构建第一个 Dockerfile
- 第一种方式,在同一个目录下, 使用点(
.)代替
shell
docker build -t test .- 第二种方式,指定 Dockerfile 文件
shell
docker build -t test -f Dockerfile启动容器
shell
docker run -d test进入容器
shell
docker exec -it [ID] bash查看设置的变量
shell
echo $ABC输出: 123
查看拷贝的文件
shell
ls /opt/输出: a.txt b.txt
剑鸣秋朔