Linux-Dockerfile与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。

相关推荐
Ghost Face...2 小时前
DDR时序校准:写均衡与门控训练解析
linux
G_H_S_3_2 小时前
【网络运维】MySQL组成与常用工具
运维·网络·mysql
点亮一颗LED(从入门到放弃)2 小时前
Linux驱动之中断(9)
linux·运维·单片机
阎*水2 小时前
Ceph 分布式存储完整实践指南
linux·运维·分布式·ceph
优质网络系统领域创作者2 小时前
IS-IS和OSPF路由协议对比以及两个协议双点双向引入
运维·网络
我爱学习好爱好爱2 小时前
Prometheus监控栈 监控Linux操作系统
linux·grafana·prometheus
sleetdream2 小时前
联想开天统信UOS安装镜像 增加系统分区空间
linux
ArrebolJiuZhou2 小时前
arm指令集(一)
linux·运维·arm开发
一只旭宝2 小时前
Linux专题三:目录结构即相关操作指令,gdb调试,进程基础,以及makefile工具
linux