DockerFile
# DockerFile
# 什么是 DockerFile
- 用来构建 docker 镜像的构建文件
- 就是命令脚本
# 构建步骤
- 编写一个 DockerFile 文件
- docker build 构建成为一个镜像
- docker run 运行镜像
- docker push 发布镜像(DockerHub 、阿里云仓库)
# DockerFile 构建过程
- 每个保留关键字(指令)都是必须是大写字母
- 执行从上到下顺序
#
表示注释- 每一个指令都会创建提交一个新的镜像层,并提交
# DockerFile 优势
- DockerFile 是面向开发的,以后要发布项目,做镜像,就需要编写 DockerFile 文件
- Docker 镜像逐渐成企业交付的标准,必须要掌握!
- DockerFile 构建镜像文件,定义了一切的步骤,源代码
- Dockerfile 的体积小,容易进行快速迁移部署
- 环境构建流程记录在 DockerFile 中,能够直观的看到镜像构建的顺序和逻辑
- Docker Images 通过 DockerFile 构建生成的镜像,最终发布和运行产品
- Docker 容器,镜像运行起来提供服务
# 常用指令
指令 | 说明 |
---|---|
FROM | 指明当前的镜像基于哪个镜像构建 |
ARG | 定义构建镜像过程中使用的变量 |
LABEL | 标记镜像信息,添加元数据 |
EXPOSE | 暴露 Docker 容器在运行时监听指定的网络端口 |
ENV | 指定环境变量 |
ENTRYPOINT | 指定镜像的默认入口命令 |
VOLUME | 创建一个数据卷挂载点 |
USER | 指定运行容器时的用户名或 UID |
WORKDIR | 配置工作目录 |
RUN | 运行指定命令 |
CMD | 启动容器时指定默认执行的命令 |
ADD | 添加内容到镜像 |
COPY | 复制内容到镜像 |
ONBUILD | 创建子镜像时指定自动执行的操作指令 |
STOPSIGNAL | 指定退出的信号值 |
HEALTHCHECK | 配置启动容器如何进行健康检查 |
SHELL | 指定默认 shell 类型 |
# 示例
构建含有 ifconfig 、vim 命令的 centos
DockerFile 内容:
FROM centos
MAINTAINER snowji<123456789@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
build 结束后,进入容器使用 ifconfig
命令
[root@1afccfd13f3d local]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 127.0.0.1 netmask 255.255.0.0 broadcast 127.0.0.2
ether 02:42:xx:xx:00:03 txqueuelen 0 (Ethernet)
RX packets 7 bytes 586 (586.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
可以使用 ifconfig
命令查看网络信息
(完)