什么是 DockerFile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
参考Tomcat的dockerFile文件
DockerFile指令
- FROM 指定父镜像: 基于哪个镜像image构建 指定基础镜像,必须为第一个命令
- MAINTAINER :维护者
- RUN: 容器创建的时候执行一段命令 构建镜像时执行的命令
- ADD: 将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
- COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
- CMD:构建容器后调用,也就是在容器启动时才进行调用。 .sh执行文件
- ENV: 设置环境变量
- EXPOSE: 指定于外界交互的端口
- VOLUME 用于指定持久化目录
- WORKDIR 设置进入容器时的路径 默认访问的目录
DockerFile编写规范
- #、 代表注释
- 指令必须要大写,后面至少需要带至少一个参数;
- 指令是按照从上到下,顺序执行;
使用 Dockerfile 定制镜像
- 下面以定制一个 cnetos镜像,下面是官网的文件内容:
运行后发现会自动进入容器里面
原因是centos的dockerfile下面的这个命令
CMD ["/bin/bash"]
我们都知道,如果要进入一个容器里面需要执行
docker exec -it [CONTAINER ID] bash
所以说
CMD [“/bin/bash”] 等于 docker exec -it [CONTAINER ID] bash
自定义镜像需求
- 需求定制修改centos根目录,运行的时候自动进入/user目录
- 实现支持vim插件;
实现逻辑
- 需要自己制作一个dockerfile文件
- 继承docker hub中的centos自带的dockerfile文件
- 在docker hub centos 上加入以下两个功能
- 结果如下
# 继承docker hub 中centos的镜像文件
FROM centos
# 作者名
MAINTAINER tujr
# 配置环境变量
ENV MYPATH /usr
# 设置进入到容器的时候默认打开 /user目录
WORKDIR $MYPATH
# 安装下载 vim
RUN yum -y install vim
# 外部访问端口
EXPOSE 80
# 启动容器后自动进入到容器里面
CMD /bin/bash
- 将该dockerfile文件上传到linux服务器中
- Dockerfile→使用docker 将该Dockerfile实现打包成镜像文件→容器运行该镜像文件。
- 使用docker build—将该Dockerfile实现打包成镜像文件
docker build -f DockerfileName -t mycs:1 .
-
DockerfileName ------配置文件
-
mycs----打包镜像文件名称
-
1 ----tag 版本号码
-
运行
docker run -it mycs:1