docker - [11] 数据卷之DockerFile

通过DockerFile可以生成一个镜像

 

一、DockerFile的介绍

狂神:dockerfile是用来构建docker镜像的文件命令参数脚本。

狂神:dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件

狂神:Docker镜像逐渐成为企业交付的标准,必须要掌握!

 

DockerFile:构建文件,定义了一切的步骤,源代码

DockerImages:通过 DockerFile 构建生成的镜像,最终发布和运行的产品。

DockerContainer:容器就是镜像运行起来提供服务的。

 

 

 

二、DockerFile的指令

指令 说明
FROM 设置镜像使用的基础镜像
MAINTAINER 设置镜像的作者
RUN 编译镜像时运行的脚本
CMD 设置容器的启动命令
LABEL 设置镜像的标签
EXPOSE 设置镜像暴露的端口
ENV 设置容器的环境变量
ADD 编译镜像时复制文件到镜像中
COPY 编译镜像时复制文件到镜像中
ENTRYPOINT 设置容器的入口程序
VOLUME 设置容器的挂载卷
USER 设置运行RUN CMD ENTRYPOINT的用户名
WORKDIR 设置RUN CMD ENTRYPOINT COPY ADD指令的工作目录
ARG 设置编译镜像时加入的参数
ONBUILD 设置镜像的ONBUILD指令
STOPSIGNAL 设置容器的退出信号量

 

2.1、CMD和ENTRYPOINT的区别

CMD:指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代

(1)编写dockerfile并构建镜像,之后启动镜像;

 (2)直接运行镜像,会执行CMD处配置的命令。如果执行docker run 2b06f9641629 -l会报错。

(3)追加参数会报错:docker run 2b06f9641629 -l

 

 ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令

(1)编写dockerfile:dockerfile-entrypoint-test

FROM centos
ENTRYPOINT ["ls","-a"]

(2)构建镜像:docker build -f dockerfile-entrypoint-test -t entrypointtest .

(3)启动镜像:docker images | grep entrypoint

(4)追加参数:docker run a58b53c50da3 -l

 

 

 

三、DockerFile构建过程

3.1、docker file语法规范

1、每个保留关键字(指令)都必须是大写字母

2、执行从上到下顺序执行

3、# 表示注释

4、每一个指令都会创建一个新的镜像层,并提交

示例:centos的dockerfile

FROM scratch
MAINTAINER The CentOS Project <cloud-ops@centos.org>
ADD c7-docker.tar.xz /
LABEL name="CentOS Base Image" \
    vendor="CentOS" \
    license="GPLv2" \
    build-date="2016-03-04"

# Volumes for systemd
# VOLUME ["/run", "/tmp"]

# Environment for systemd
# ENV container=docker

# For systemd usage this changes to /usr/sbin/init
# Keeping it as /bin/bash for compatability with previous
CMD ["/bin/bash"]

 

3.2、docker file构建步骤

(1)编写一个dockerfile文件

(2)docker build构建成为一个镜像

(3)docker run运行镜像

(4)docker push发布镜像(DockerHub、阿里云镜像仓库)

 

(1)编写dockerfile文件:dockerfile1

FROM centos

VOLUME ["volume01","volume02"]

CMD echo "----end----"
CMD /bin/bash

 

(2)docker build构建成为一个镜像:harleycentos:1.0

docker build -f dockerfile1 -t harleycentos:1.0 .

mydockerfile-centos:dockerfile文件路径

mycentos:0.1镜像名

 

(3)docker run运行镜像:docker run -it harleycentos:1.0 bash

(4)可以使用docker inspect看到demo中的挂载属于匿名挂载

(5)docker push发布镜像

 

 

3.3、制作一个centos镜像

(1)编写dockerfile文件:mydockerfile

# 以哪个镜像作为基础
FROM centos
MAINTAINER harley<hhl686666@163.com>

# 设置环境变量MYPATH
ENV MYPATH /usr/local
# 设置工作目录(docker run -it运行镜像之后所在的目录)
WORKDIR $MYPATH

# 安装vim、net-tools
RUN yum -y install vim
RUN yum -y install net-tools

# 暴露80端口
EXPOSE 80
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash

(2)构建镜像:docker build -f mydockerfile -t mycentos:0.1 .

 

 

 

 

 

 

 

 

— 要养成终身学习的习惯 —

posted @ 2023-07-10 22:39  HOUHUILIN  阅读(18)  评论(0编辑  收藏  举报