对于现代应用来说,大多都是通过很多的微服务互相协同组成的一个完整应用。例如,订单管理、用户管理、品类管理、缓存服务、数据库服务等,它们构成了一个电商平台的应用。而部署和管理大量的服务容器是一件非常繁琐的事情。而 Docker Compose 就是解决这类问题的。Docker Compose 是一个需要在 Docker 主机上进行安装的 Docker 容器编排外部工具。其并不是通过脚本或各
2024-01-23·53 阅读
使用docker安装redis的单机版、主从集群、高可用集群和分布式集群的步骤详解。
2024-01-23·19 阅读
通过 docker exec busybox6 ip addr 命令查看容器的 IP 信息可以发现该容器的 IP 与宿主机的 IP 信息一模一样。所以在 host 模式下,容器直接使用宿主机的网络接口、IP 和路由规则。这意味着在 host 网络模式下运行的容器可以直接监听宿主机上的所有网络端口,也正是因为容器与宿主机共用网络端口,所以在 host 模式下的运行容器不需要进行端口映射就能直接对外提
2024-01-22·18 阅读
数据卷是宿主机中的一个特殊的文件/目录,这个文件/目录与容器中的另一个文件/目录进行了直接关联,在任何一端对文件/目录的写操作,在另一端都会同时发生相应变化。在宿主中的这个文件/目录就称为数据卷,而容器中的这个关联文件/目录则称为该数据卷在该容器中的挂载点。数据卷的设计目的就是为了实现数据持久化,其完全独立于容器的生命周期,属于宿主机文件系统,但不属于 UnionFS。因此,容器被删除时,
2024-01-22·20 阅读
对于 shell 形式的 ENTRYPOINT 或者 CMD,docker daemon 会创建一个新的 /bin/bash shell 进程,并在这个新进程中运行你的命令。这意味着你的命令会在一个新的 shell 环境中运行,这个环境有它自己的环境变量,且和启动容器的环境是隔离的。这与 exec 形式不同,exec 形式直接在 Docker 容器的主进程中运行命令,没有额外创建
2024-01-20·21 阅读
Dockerfile 是用于构建 Docker 镜像的脚本文件,由一系列指令构成。通过 docker build 命令构建镜像时,Dockerfile 中的指令会由上到下依次执行,每条指令都将会构建出一个镜像。这就是镜像的分层。因此,指令越多,层次就越多,创建的镜像就越多,效率就越低。所以在定义 Dockerfile 时,能在一个指令完成的动作就不要分为两条。
2024-01-19·19 阅读
Docker 容器运行的本质是运行一个进程,该进程在其自己的隔离环境中运行,该环境由 Linux 内核的特性(如 cgroups 和 namespaces)提供。Docker 容器存在的意义就是为了运行容器中的应用,对外提供服务,所以启动容器的目的就是启动运行该容器中的应用。容器中的应用运行完毕后,容器就会自动终止。所以,如果不想让容器启动后立即终止运行,则就需要使容器应用不能立即结束。通常采用的
2024-01-19·21 阅读
从操作系统原理角度来看,Docker 镜像可以从操作系统原理角度来看,Docker 镜像可以类比为操作系统中的文件系统快照。一个 Docker 镜像可以看作是一个只读的文件系统快照,它包含了应用程序运行所需的所有文件和目录。每个镜像层都相当于文件系统中的一个增量变更,它们按照层级的方式进行组织,使得镜像的构建和复用更加高效。类似于操作系统中的进程,Docker 容器是基于镜像创建的运行实体。当
2024-01-19·23 阅读
现代 Docker 引擎由如下主要的组件构成:Docker 客户端(Docker Client)、Docker 守护进程(Docker daemon)、containerd 以及 runc。它们共同负责容器的创建和运行。下面是 Docker 引擎的发展过程:
2023-11-09·25 阅读
"系统好卡,肯定是又有哪个哥们的程序在作孽了"。现在的服务器都牛的很,动不动 128G 内存,24 个 CPU,Linux 本身就是个多租户的操作系统,可以多人共用,但是如果某个程序狂吃内存和 CPU,占用了太多系统资源,这就会影响其他程序的运行。一个公司的几个同事共用一台机器出现这种问题可以通过内部协调沟通解决。但是云主机提供商呢?不同的用户之间不认识,共用一台强大的计算机,结果某个程序耗尽了资
2023-10-30·49 阅读