Docker
Docker简介
Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux
机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker
使用 Go
语言开发,并遵行 Apache2.0
开源协议,自 17.03
版本后分为 CE
(Community Edition):社区版 和 EE
(Enterprise Edition) :企业版。
Docker的特点 :
轻量级:容器只包含应用程序和它的依赖,不像虚拟机那样包含整个操作系统。
快速启动:容器可以在几毫秒内启动,比传统的虚拟机快得多。
隔离性:容器之间是隔离的,一个容器的崩溃不会影响其他容器。
可移植性:容器可以在任何支持 Docker 的机器上运行,无需任何修改。
版本控制:可以通过 Dockerfile 来版本控制应用的构建过程。
Docker 的使用场景:
持续集成/持续部署(CI/CD):Docker 可以用于自动化测试和部署。
微服务架构:Docker 适合微服务架构,可以轻松部署和管理微服务。
开发与生产环境的一致性:使用 Docker 可以确保开发、测试和生产环境的一致性。
环境隔离:Docker 可以用于隔离不同的应用和服务,确保它们不会相互影响。
Docker 基本概念:
镜像(
Image
):镜像是一个只读的模板,用于创建容器。例如,一个镜像可能包含一个完整的 操作系统环境,里面安装了服务器和需要运行的应用。镜像是分层构建的,每一层都是只读的。容器(
Container
):容器是从镜像创建的运行实例。它可以被启动、停止、删除等。每个容器都是独立的、隔离的,并且有自己独立的网络和命名空间。仓库(
Repository
):仓库是集中存放镜像文件的地方。Docker
仓库可以分为公开仓库(Public)和私有仓库(Private)。最大的公开仓库是 Docker Hub,存放了大量的镜像供用户下载。Dockerfile:
Dockerfile
是一个文本文件,包含了一系列用于构建镜像的指令。通过这些指令,可以自动化地构建镜像。构建(
Build
):构建是从 Dockerfile 创建镜像的过程。构建时,Docker 会逐条执行 Dockerfile 中的指令。层(
Layer
):镜像是多层叠加的。每一层对应 Dockerfile 中的一个指令。这些层是只读的,当容器启动时,Docker 会创建一个可写层在所有只读层的顶部。卷(
Volume
):卷是容器之外的存储,用于持久化和共享数据。容器中的数据如果不通过卷持久化,那么当容器被删除时,数据也会丢失。