https://docker_practice.gitee.io/nginx
https://yeasy.gitbooks.io/docker_practice/content/git
1). Docker 镜像是一个特殊的文件系统 2). Docker 镜像(Image),就至关因而一个 root 文件系统 3). 除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等) 4). 镜像不包含任何动态数据,其内容在构建以后也不会被改变。 5). 镜像只是一个虚拟的概念,其实际体现并不是由一个文件组成,而是由一组文件系统组成 6). 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在本身这一层
1). 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 同样 2). 镜像是静态的定义,容器是镜像运行时的实体 3). 容器的实质是进程 4). 容器不该该向其存储层内写入任何数据 5). 容器存储层要保持无状态化 6). 全部的文件写入操做,都应该使用 数据卷(Volume)、或者绑定宿主目录 6). 容器运行时应该尽可能保持容器存储层不发生写操做 7). 对于数据库类须要保存动态数据的应用,其数据库文件应该保存于卷(volume)中
1). 经过 <仓库名>:<标签> 的格式来指定具体是这个软件哪一个版本的镜像 2). 仓库名常常以 两段式路径 形式出现,好比 jwilder/nginx-proxy 3). 前者每每意味着 Docker Registry 多用户环境下的用户名,后者则每每是对应的软件名
1). docker build -t nginx:v3 . ,最后这个 . 不是在指定 Dockerfile 所在路径,而是指定上下文路径 2). docker build 命令构建镜像,其实并不是在本地构建,而是在服务端 3). 通常来讲,应该会将 Dockerfile 置于一个空目录下,或者项目根目录下 4). Docker 不是虚拟机,容器就是进程 5). CMD 指令就是用于指定这个进程的启动命令的 6). 在指令格式上,通常推荐使用 exec 格式,这类格式会被解析为 JSON 数组 7). Docker 不是虚拟机,容器中的应用都应该之前台执行,容器内没有后台服务的概念 8). ENTRYPOINT 的目的和 CMD 同样,都是在指定容器启动程序及参数 9). 在 Shell 中,连续两行是同一个进程执行环境,而在 Dockerfile 中,这两行 RUN 命令的执行环境根本不一样,是两个彻底不一样的容器