diff --git a/Demo/Dockerfile b/Demo/Dockerfile
new file mode 100644
index 0000000..75e4d0f
--- /dev/null
+++ b/Demo/Dockerfile
@@ -0,0 +1,4 @@
+# 注释: Dockerfile学习镜像
+FROM busybox
+ENV file=app
+ADD ./project/ /usr/local/$file/
\ No newline at end of file
diff --git a/Demo/images/DockerBuild.png b/Demo/images/DockerBuild.png
new file mode 100644
index 0000000..eee5366
Binary files /dev/null and b/Demo/images/DockerBuild.png differ
diff --git a/Demo/images/build.png b/Demo/images/build.png
new file mode 100644
index 0000000..cefc98c
Binary files /dev/null and b/Demo/images/build.png differ
diff --git a/Demo/images/build2.png b/Demo/images/build2.png
new file mode 100644
index 0000000..0e34ee0
Binary files /dev/null and b/Demo/images/build2.png differ
diff --git a/Demo/images/构建流程示意图.drawio b/Demo/images/构建流程示意图.drawio
new file mode 100644
index 0000000..801df62
--- /dev/null
+++ b/Demo/images/构建流程示意图.drawio
@@ -0,0 +1 @@
+7Vlbd6M2EP41eowPd8OjZeNt2nRPerJtuk85CpZBDSBWiNjeX98RCAM2uW6z3j0pfjAaDUKa+eYbjUD2PNt+EKRIfucrmiLLWG2RvUCWZbmuC39KstMSx7QaSSzYqpGZneCKfaVaaGhpxVa0HChKzlPJiqEw4nlOIzmQESH4Zqi25unwrQWJ6ZHgKiLpsfSarWTSSH1r2sl/oSxO2jebXtD0ZKRV1ispE7Lim57IDpE9F5zL5i7bzmmqrNfa5fp8d51e3Hkffv2j/EL+xL99+vjXWTPY8iWP7JcgaC5fPfT97iMVZ/jqc+WI81lA8dfw9qw1wz1JK20wvVi5ay0oeJWvqBrFRDbeJEzSq4JEqncDoAFZIrNUd695LjUI7LY95ykX9Vj2cunBBXL9Wiok3R446olVmnvTA2gpz6gUO3hOj2Lb2lsar2emrwWbzvum4Wph0nP9tNUkGnLxfvTOrHCjLfsCK0+PbEpXAFLd5EImPOY5ScNOijurG9DqdC44L7St/6FS7rSxSSX5t3hCTegVfoBF8UpE9JHFt0FPREzlI3reuF8FTYlk98PJ/eceMo/CYMGjOyrWDJxheSlMHN+KgQ+9L5WK/NquZ2Vt6Bko2Gaxra3a9sNdLPd27mFAgZ8BUV2QW5pe8pJJxnPouuVS8mzozFZ3lrJY6UgFAkx0KwJPUfArLqXgd7T1cs5zhSRYQ9pzvGHgcGkp5YQUairZNlbcPyFfK0EnZSRYIW/qhdu44EwNHd7DG8pHgNVi+RQh7x1E/HQk4L2ReDedt4p35xTxDiYUu7/V8xO3bX7u9y22evCmteu3LqlgsHYFolr4o5CH9Z3IQz96qeDeIcsxnQG0TNeaOEHvGg7YzFKPcQCh/aRejyrLfs9p5LlIaFx2qjxiPb2dKu+ojBLtEFIWzaZ3zbbKS33L19xbT9DFyF2M8T3L6t1v30mm1ckXLIthGSm7VYspIwK5bNkktkl5H5+Cq60hWdsjZG2ZwcQ1R/j6zfZnpntawu7TdY+9f0bC9n6KMPUe2O6BbH5xfgSGntN4JVOWwxarrVaNB2qig11XEKzhGtt1iSiBcJXUnpCiSGGT12wDMbQ+7WrVQvBICZSmFu3Bd/KCyzGGEe2OBLQ3Es2W8VbRbAXvOU/632nH9E0u8o/TZDhFMx/5GIUuwjPkL1HoocBD/hSFDsIYYe/xVDpWquyPbJTCipTJ3sM9zz2naHIN9QN5elCs7VPxk9XceAk3yifHdd0BafD1mkV0EvEsq3JNGeWkijJyMySR07PDgBz2Qd+vzfyx2sx+M3Y4htE7Yoe2oHmSHtxT0kM7y7H83D+N0QcrwBizEPm+Ygx/hmZOTR1z5C9Ul5KYKPQRXqIAdzzzf5J/fhhPgx8tybsjhVYDDGWb5xzUWXaxHTmla7IONuobQJVTJySschJAJ5jVkgAFrkKYgpetcpV+Nyylef0DR36DhDWKsgPPwm+prIIBRytGuz6dpoa5q//AATTXaw3NQRZ8ZdI6yk/jTFeXov3TwdGK9yhWNqUzEbShsvOoDhNoNndDLRBJAiYUN/Ybgt80pgdZbOyTwugJo/dy+EOz+6TUHB11X+bs8F8=
\ No newline at end of file
diff --git a/Demo/project/1.txt b/Demo/project/1.txt
new file mode 100644
index 0000000..bb101cd
--- /dev/null
+++ b/Demo/project/1.txt
@@ -0,0 +1 @@
+1版内容
\ No newline at end of file
diff --git a/Demo/project/2.txt b/Demo/project/2.txt
new file mode 100644
index 0000000..25dd7b7
--- /dev/null
+++ b/Demo/project/2.txt
@@ -0,0 +1 @@
+我是第2版的内容
\ No newline at end of file
diff --git a/Demo/project/3.txt b/Demo/project/3.txt
new file mode 100644
index 0000000..1825664
--- /dev/null
+++ b/Demo/project/3.txt
@@ -0,0 +1 @@
+第3版的内容
\ No newline at end of file
diff --git a/Dockerfile.md b/Dockerfile.md
new file mode 100644
index 0000000..be897a1
--- /dev/null
+++ b/Dockerfile.md
@@ -0,0 +1,164 @@
+# Docker镜像学习
+
+## 镜像构建流程
+
+
+
+## 构建镜像的三种方法
+
++ 基于已有容器,使用 `docker commit` 命令构建
+
+ ```
+ # 1 创建容器,执行相关操作,之后退出
+ docker run -it ubuntu:18.04 /bin/bash
+ docker exec -it xxxxxxxx
+
+ # 2 基于该容器使用构建新的镜像
+ docker commit -m "new_image" -a "cnLinuxer" b66 myubuntu:v1
+
+ 参数解释:
+ -m选项指定了新镜像的提交信息
+ -a标注作者信息
+ b66是容器ID
+ myubuntu:v1是指定的新镜像名称。
+
+ # 3 使用新镜像
+ docker images
+ docker run -it ubuntu:18.04 /bin/bash
+ ```
+
+
+
++ 基于本地模板,使用 `docker import ` 导入
+
+ ```
+ # 1 将现有容器,导出为模板文件
+ docker export b66 > /root/myubuntu.tar
+
+ # 2 模板文件导入为镜像
+ docker import /root/myubuntu.tar ruyu/ubuntu:18.04
+
+ # 3 使用新镜像
+ docker images
+ docker run xxxx
+ ```
+
+
+
++ 基于Dockerfile文件,使用 `docker build` 构建
+
+ ```tex
+ # 1 编写Dockerfile文件
+
+ 文件内容示例
+
+ #指定父镜像
+ FROM centos:7.5.1804
+
+ #指定维护者信息
+ MAINTAINER mynginx
+
+ #将本地nginx软件包上传至容器/usr/local/下
+ ADD nginx-1.11.1.tar.gz /usr/local
+
+ #yum安装依赖软件
+ RUN yum -y install vim wget gcc gcc-c++ make openssl-devel pcre-devel
+
+ #进入nginx工作目录
+ WORKDIR /usr/local/nginx-1.11.1/
+
+ #编译并安装nginx服务
+ RUN ./configure --prefix=/usr/local/nginx && make && make install
+
+ #关闭nginx后台运行
+ RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
+
+ #添加nginx的环境变量
+ ENV PATH /usr/local/nginx/sbin:$PATH
+
+ #将容器的80端口映射出来
+ EXPOSE 80
+
+ #执行nginx命令,启动nginx
+ CMD ["nginx"]
+
+ # 2 docker build 构建镜像
+ docker build -f Dockerfile -t mynginx:v1 .
+ ```
+
+
+
+## 构建过程(docker build -f Dockerfile -t name .)
+
+> docker是c/s架构,c为docker cli,s为驻守服务进程。
+> docker build 构建镜像时,cli只负责把命令和相文件传递给服务进程,服务程序接收命令和文件、创建构建上下文、执行构建并产出镜像。
+
+
+
+
+
+## 构建环境
+
+1. Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录
+2. Dockerfile中相对路径默认都是Dockerfile所在的目录
+3. 因Docker构建的分层构建,联合挂载的特性,Dockerfile中,每一条指令被视为一层,尽量一行写多个指令(&&连接 \用来分行)。
+4. 约定:指令大写,内容小写
+
+
+
+## Dockerfile文件
+
+>Dockerfile是用来定制镜像的文本文件,内容为构Docker建镜像的一条条指令,由Docker build 命令使用,构建Docker镜像。
+
+## 文件组成
+
+> \# 开头的为注释行
+>
+> 通常包含4部分:基础镜像信息、维护者信息、 镜像操作指令和容器启动时执行指令,新版“维护者信息”放在LABLE中指定
+>
+> 执行:按照Dockerfile指令顺序,从上到下依次执行。
+
+```dockerfile
+# 这是一个示例Dockerfile文件
+FROM busybox
+MAINTAINER username
+ENV file=app
+ADD ./project/ /usr/local/$file/
+```
+
+## 命令
+
++ FROM
+
+> FROM 指令必须是非注释的第一个指令, 可以使用 “ AS 别名” 提供别名,在路另外使用( --from)。
+>
+> 指定了基础镜像,后面的所有指令都是运行在该基础镜像环境上的。
+>
+> 如果不以任何镜像为基础,那么写法为:FROM scratch
+
+```dockerfile
+#语法格式
+FROM
+FROM :
+FROM @
+
+# 特殊例子
+#不以任何镜像为基础(内置空白镜像)
+FROM scratch
+
+# busybox是一个软件工具箱镜像,集成了linux中几百个常用的linux命令以及工具。
+# 大小只有1.2M,适合用来测试
+FROM busybox
+
+# .net core例子
+# .net core sdk
+mcr.microsoft.com/dotnet/sdk:2.1 AS build
+```
+
+## run
+
+```
+# /bin/sh -c 参数
+-c 参数:把后面的命令(字符串)当成一个整体来执行
+```
+