dockerfile创建镜像的流程如下:

(1)手动制作 docker 镜像,记录历史命令

(2)根据历史命令编写dockerfile文件

(3)docker image build 生成镜像

(4)测试镜像功能

常用的dockerfile指令(都要大写)

from:指定自动化构建的基础镜像,该指令必须指定基于哪个镜像

run:  制作镜像中需要执行的命令

cmd:容器默认启动执行的命令,如果 run 里卖弄指定了执行命令,将覆盖 cmd 的命令

         一个dockerfile至多只能有一个cmd,如果有多个,只有最后一个生效。

entrypoint:容器启动以后的执行,不会被覆盖。

copy:拷贝dockerfile当前目录下的文件到容器指定目录,注意,目录应该有 / ,否则Copy指令会理解为一个文件。不会自动解压 tar 包

add:拷贝dockerfile当前目录下的文件到容器指定目录,会自动解压 tar 包

workdir :指定工作目录

expose:指定镜像对外暴露的端口

volume:指定随机持久卷 

env:设置环境变量

label:为镜像打标签

mkdir -pv  dockerfile/{nginx,tomcat,httpd} #同时创建多个目录,-v 显示版本信息,在当前root目录下

cd  dockerfile/nginx  &&  yum -y install vim  #装一个 vim 的包

pwd  &&  vim Dockerfile   #查看当前路径建立一个Dockerfile文件

  FROM centos:7     
  
  RUN  mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.backup && \    # 把官方的源mv改名作为备份
       curl -o /etc/yum.repos.d/CentOS-Base.repo  https://mirrors.aliyun.com/repo/Centos-7.repo && \    #下载阿里云源
       sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d'  /etc/yum.repos.d/CentOS-Base.repo  && \   #把阿里内网源删除 
       curl -o /etc/yum.repos.d/epel.repo  https://mirrors.aliyun.com/repo/epel-7.repo	#下载阿里的epel源
                             
  RUN   yum -y install nginx  && rm -rf /var/cache/yum   # &&表示同时进行,\表示换行符,都是一行命令,可以有多个RUN,#删除缓存,减小镜像大小

  CMD  nginx -g "daemon off;"

docker image build  --help  #查看创建镜像的相关信息

docker image build -t 镜像名 .  #在当前路径下创建镜像并指定名称

在创建镜像时,会生成临时镜像,不要清除临时镜像(有可能后面的镜像依赖前面的临时镜像)

docker container ps -l  #查看最近的容器的状况

docker操作系统模板文件生成镜像 docker生成dockerfile_运维

docker 镜像的优化思路

(1)利用缓存提高编译速度—利用缓存,将不经常变更的指令放在靠前的位置;合并多条命令减小镜像层数

(2)减小镜像体积—删除无用的缓存、使用较小的基础镜像