diff --git a/Demo/Dockerfile b/Demo/Dockerfile index 75e4d0f..db90c49 100644 --- a/Demo/Dockerfile +++ b/Demo/Dockerfile @@ -1,4 +1,6 @@ # 注释: Dockerfile学习镜像 -FROM busybox + +# 可以么 +FROM busybox ENV file=app ADD ./project/ /usr/local/$file/ \ No newline at end of file diff --git a/Demo/学习.md b/Demo/学习.md index be897a1..3395d4a 100644 --- a/Demo/学习.md +++ b/Demo/学习.md @@ -8,7 +8,7 @@ + 基于已有容器,使用 `docker commit` 命令构建 - ``` + ``` shell # 1 创建容器,执行相关操作,之后退出 docker run -it ubuntu:18.04 /bin/bash docker exec -it xxxxxxxx @@ -27,11 +27,9 @@ docker run -it ubuntu:18.04 /bin/bash ``` - - + 基于本地模板,使用 `docker import ` 导入 - ``` + ``` shell # 1 将现有容器,导出为模板文件 docker export b66 > /root/myubuntu.tar @@ -43,8 +41,6 @@ docker run xxxx ``` - - + 基于Dockerfile文件,使用 `docker build` 构建 ```tex @@ -86,8 +82,6 @@ docker build -f Dockerfile -t mynginx:v1 . ``` - - ## 构建过程(docker build -f Dockerfile -t name .) > docker是c/s架构,c为docker cli,s为驻守服务进程。 @@ -95,16 +89,53 @@ ![build](images/build2.png) - - ## 构建环境 1. Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录 2. Dockerfile中相对路径默认都是Dockerfile所在的目录 3. 因Docker构建的分层构建,联合挂载的特性,Dockerfile中,每一条指令被视为一层,尽量一行写多个指令(&&连接 \用来分行)。 4. 约定:指令大写,内容小写 - - + +```shell +# 构建流程 +# docke build . 默认构建 + +# 输出,#行为手动添加的说明 + # 加载 Dockerfile 文件 + => [internal] load build definition from Dockerfile + # 把 dockerfile 文件传输到Docker守护进程服务,大小为 149B 0.0s + => => transferring dockerfile: 149B + # 加载.dockerignore(Dockerfile目录下,不上传文件配置文件) 文件 0.0s + => [internal] load .dockerignore + # 传输构建上下文(会传Docfile目录及子目录中除.dockerignore配置外的所有文件及文件夹) 0.0s + => => transferring context: 2B + # 从基础镜像加载元数据 0.0s + => [internal] load metadata for docker.io/library/centos:latest + # 加载构建上下文 3.0s + => [internal] load build context + # 传输构建上下文 0.0s + => => transferring context: 125B + # 构建第一阶段:下载与验证基础镜像 0.0s + => [1/2] FROM docker.io/library/centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 10.8s + => => resolve docker.io/library/centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 0.0s + => => sha256:a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1 83.52MB / 83.52MB 7.0s + => => sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 762B / 762B 0.0s + => => sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc 529B / 529B 0.0s + => => sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6 2.14kB / 2.14kB 0.0s + => => extracting sha256:a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1 + + # 构建第二阶段 + # 执行命令 3.6s + => [2/2] ADD ./project/ /usr/local/app/ + # 导出镜像 0.3s + => exporting to image + # 导出镜像层 0.0s + => => exporting layers + # 写入镜像文件 0.0s + => => writing image sha256:9f21ab65d16f8a8599aec0ba0c1b31b806ae675be2701a6d671ec42887ab5e56 + # 给镜像打标签 0.0s + => => naming to docker.io/library/mycentos:study1 +``` ## Dockerfile文件 @@ -128,7 +159,7 @@ ADD ./project/ /usr/local/$file/ ## 命令 -+ FROM ++ FROM > FROM 指令必须是非注释的第一个指令, 可以使用 “ AS 别名” 提供别名,在路另外使用( --from)。 > @@ -157,8 +188,7 @@ mcr.microsoft.com/dotnet/sdk:2.1 AS build ## run -``` +``` shell # /bin/sh -c 参数 -c 参数:把后面的命令(字符串)当成一个整体来执行 ``` -