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。

相关推荐
张太行_4 分钟前
Linux静态库:多模块高效管理
linux·运维·服务器
公子烨24 分钟前
linux的斩杀线之OOM操控
linux
wgl6665201 小时前
Linux---基础IO!
linux·运维·服务器
Ancelin安心1 小时前
kali-dirsearch的使用
linux·运维·服务器·python·计算机网络·web安全·网络安全
jun_bai2 小时前
python+Java的网盘程序升级版。无感知备份文档,保护数据资产利器。
运维·服务器
IT利刃出鞘2 小时前
VMware--解决vmdk越来越大的问题(vmdk瘦身)
linux·ubuntu·vmware
suzhou_speeder2 小时前
PoE 延长器:突破 PoE 距离限制,优化网络灵活部署方案
运维·网络·poe·poe交换机·poe延长器
wdfk_prog2 小时前
[Linux]学习笔记系列 -- [driver]base
linux·笔记·学习
月光下的麦克3 小时前
如何查案动态库版本
linux·运维·c++
Vallelonga3 小时前
使用 busybox 制作磁盘镜像文件
linux·经验分享