一、docker的C/S架构:
在构建docker镜像之前,先要理解docker的C/S架构:
1、Client 通过接口与Server进程通信实现容器的构建,运行和发布。
2、client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。
所以,docker命令是从客户端命令行输入,然后发往docker服务器(docker daemon)处执行。
二、构建docker镜像命令:
docker build -t nginx/v1 .
关于docker build指令的概念:
1、构建会在 Docker 后台守护进程(daemon)中执行,而不是Client中
2、构建前,构建进程会将 上下文全部内容(递归)发送到守护进程
3、构建上下文是指Dockerfile 所在的本地路径或一个URL(Git仓库地址)
4、docker build 命令会根据 Dockerfile 文件及上下文构建新 Docker 镜像
大多情况下,应该将一个空目录作为构建上下文环境,并将 Dockerfile 文件放在该目录下
构建上下文环境会被递归处理,所以构建所指定的路径还包括了子目录,而URL还包括了其中指定的子模块
三、关于dockerfile:
Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动执行指令:
#1、基础镜像信息
FROM java:8
#2、维护者信息
MAINTAINER blue blue@163.com
#3、镜像操作指令
RUN echo "hello world"
#4、容器启动指令
ENTRYPOINT ["java", "-jar", "/mydocker.jar"]
更多docker指令解释:
https://www.cnblogs.com/ityouknow/p/8595384.html
四、缓存
Docker 守护进程会一条一条的执行 Dockerfile 中的指令,而且会在每一步提交并生成一个新镜像,最后会输出最终镜像的ID。生成完成后,Docker 守护进程会自动清理你发送的上下文。
Dockerfile文件中的每条指令会被独立执行,并会创建一个新镜像,RUN cd /tmp等命令不会对下条指令产生影响。
Docker 会重用已生成的中间镜像,以加速docker build的构建速度。以下是一个使用了缓存镜像的执行过程:
构建缓存仅会使用本地父生成链上的镜像,如果不想使用本地缓存的镜像,也可以通过–cache-from指定缓存。指定后将不再使用本地生成的镜像链,而是从镜像仓库中下载。