Docker 实践:使用 Dockerfile 构建本身的 centos

Dockerfile 是用来构建 docker 镜像的描述文件。docker

  • 每一个指令必须都是大写字母;
  • 指令从上到下顺序执行;
  • 使用 # 号做为注释;
  • 每一个指令多会建立一个新的层并提交;

image.png

编写 Dockerfile 文件

vim Dockerfile
# 镜像使用的基础镜像
FROM centos

# 指明镜像的做者
MAINTAINER wu<wuyuanhui@qq.com>

# 构建时设置环境变量
ENV MYPATH /usr/local

# 镜像的工做目录,启动容器后进入的目录
WORKDIR $MYPATH

# 镜像构建时须要运行的命令
RUN yum -y install vim
RUN yum -y install net-tools

# 添加压缩包,会自动解压
ADD apache-tomcat-xxx.tar.gz /usr/local/

# 相似ADD指令,将文件拷贝到镜像中
COPY readme.txt /usr/local/readme.txt

# 指定对外的暴露端口
EXPOSE 80

# 匿名挂载数据卷
VOLUME ["volume01","volume02"]

# 容器启动时须要运行的命令,多个CMD命令只有最后一个会生效
# CMD中的命令能够被docker run的命令彻底替代
CMD echo $MYPATH
CMD ["ls","-a"]

# 容器启动时须要运行的命令,能够被用于追加命令
# ENTRYPOINT ["ls","-a"]

# 输出一行内容
CMD echo "---END---"

# 进入控制台
CMD /bin/bash

使用 Dockerfile 构建镜像

# 构建镜像
# -f 指定使用的Dockerfile文件,-t 指定生成镜像的版本,. 镜像放在当前目录
docker build -f /home/Dockerfile -t my_centos:1.0 .

# 查看全部镜像
docker images

# 运行容器,默认会去找最新版,因此须要指定版本
docker run -it --name my_centos01 my_centos:1.0 /bin/bash

pwd
ifconfig
vim test.txt

# 查看运行容器时自动挂载的数据卷 volume01, volume02
ls -l
exit
# 查看镜像构建历史
docker history image_id

# 查看容器详情和数据卷挂载信息
docker inspect my_centos01