文章目录
- 一、Dockerfile创建
-
- 1.1基于Docker镜像的分层结构
- [1.2 Dockerfile操作常用指令](#1.2 Dockerfile操作常用指令)
- [1.3 镜像的分层和缓存](#1.3 镜像的分层和缓存)
- [二、Docker Compose编排](#二、Docker Compose编排)
一、Dockerfile创建
Docker是一个文本文件,其中包含了一系列的指令,每个指令创建创建一个新的镜像层,通过Dockerfile,我们可以实现镜像的自动化构建。
1.1基于Docker镜像的分层结构
- 镜像分层:Docker镜像不是单一文件,而是由多层文件系统组成,每执行一条Dockerfile指令,都会生成新的镜像层。容器启动时会在镜像的只读层上添加一层可读写层。
- 镜像缓存:Docker会缓存每一层的镜像,如果某一层的内容没有变化,则会复用缓存层,以提高构建速率。
- 镜像缓存:Docker 会缓存每一层的镜像,如果某一层的内容没有变化,则会复用缓存层,以提高构建效率。
1.2 Dockerfile操作常用指令
1、FROM
指定新镜像基于的基础镜像,Dokerfile的第一条指令必须为FROM。
from centos:7
2、MAINTAINER
指定镜像的维护者信息:
MAINTAINER "
3、RUN
执行命令并将结果提交到镜像中,常用来安装软件包、修改配置等。如
RUM yum install -y httpd
4、ENTRYPOINT
设置容器启动时默认执行的命令
ENTRYPOINT["httpd"]
5、CMD
容器启动时执行的默认命令,CMD指令会被docker run命令 后指定的命令覆盖。
CMD["httpd","-D","FOREGROUND"]
6、EXPOSE
声明容器内的端口
EXPOSE 80
7、ENV
设置环境变量
8、ADD
将文件或目录从宿主机复制到镜像中,支持从URL下载文件,并能自动解压归档文件。
9、COPY
将本地文件或目录复制到镜像中。
10、VOLUME
在容器中创建挂载点
VOLIUME ["/data"]
11、USER
设置容器内运行命令时的用户
12、WORKDIR
设置后续指令的目录(cd)
13、ONBUILD
设置当该镜像作为基础竟像时,后续Dockerfile执行的命令。
14、HEALTHCHECK
设置容器的健康检查
1.3 镜像的分层和缓存
每一条Dockerfile指令都会创建一个新的镜像层。
Docker会缓存每一层的镜像,只有在指令或文件发生变化时,才会重新构建该层及其之后的层。镜像层是不可变的,删除容器时只会删除其上面的读写层,底层的镜像层不会丢失。
-- 总结:
Docker镜像的创建方式常用的有:
基于现有镜像创建:通过修改容器并提交新的镜像。
基于本地模板创建:从模板文件导入创建镜像
基于Dockerfile创建:通过编写Dockerfile来定制镜像,支持自动化构建。
二、Docker Compose编排
通过Docker Compose ,我们可以在一个YAML配置文件中定义多个服务,并实现容器之间的联动,简化了应用的部署和管理。
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
Docker-Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器
(container)。Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务当中可包括多个容器实例,Docker-
Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如
Consul。