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,存放了大量的镜像供用户下载。

    • DockerfileDockerfile 是一个文本文件,包含了一系列用于构建镜像的指令。通过这些指令,可以自动化地构建镜像。

    • 构建(Build:构建是从 Dockerfile 创建镜像的过程。构建时,Docker 会逐条执行 Dockerfile 中的指令。

    • 层(Layer:镜像是多层叠加的。每一层对应 Dockerfile 中的一个指令。这些层是只读的,当容器启动时,Docker 会创建一个可写层在所有只读层的顶部。

    • 卷(Volume:卷是容器之外的存储,用于持久化和共享数据。容器中的数据如果不通过卷持久化,那么当容器被删除时,数据也会丢失。