我觉得任何人在学习docker之前都应该去看看官方文档
什么是Docker?
在官方文档中这么写到:
Docker 是一个用于开发、交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础设施分离,从而快速交付软件。借助 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 的代码交付、测试和部署方法,您可以显著缩短编写代码与在生产环境中运行代码之间的延迟。
实际上,Docker是容器的一种,其核心思路是将应用程序及其所需的全部环境(代码、运行库、配置文件等)打包成一个独立的单元,这样就实现了应用程序在任何地方都能以相同的方式运行
这样有什么好处呢?
Docker解决的是 “项目在我的电脑上能跑,但是在服务器/你的电脑上就跑不了” 的问题
Docker 架构
Docker使用 客户端-服务器 架构,Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发 Docker 容器的主要工作
Docker 客户端和守护进程可以运行在同一个系统上,或者我们可以将 Docker 客户端连接到远程 Docker 守护进程
Docker 守护进程
Docker 守护进程 (dockerd) 监听 Docker API 请求并管理 Docker 对象,例如镜像、容器、网络和卷。守护进程还可以与其他守护进程通信以管理 Docker 服务。
Docker 客户端
Docker 客户端是用户与Docker交互的主要方式,当我们使用诸如 docker run 等命令的时候,客户端会将这些命令发送给 dockerd,然后由 dockerd 执行这些命令
Docker 对象
当我们使用 Docker 的时候,会创建或使用镜像,容器,网络,卷,插件等其他对象,这一小节简述了一些对象
镜像
镜像是一个 只读 模板,包含用于创建 Docker 容器的指令。通常来说,镜像基于另一个镜像,并且进行一些额外的定制。例如,我们可以构建一个基于 Ubuntu 镜像的镜像,但安装了 Apache Web 服务器和我们的应用程序,以及我们应用程序所需要的详细配置
我们可能会创建自己的镜像,或者只使用他人创建并发布在注册表中的镜像。要构建自己的镜像,可以创建一个 Dockerfile,使用简单的语法定义创建和运行镜像所需的步骤。Dockerfile 中的每条指令都会在镜像中创建一个层。当我们修改 Dockerfile 并重新构建镜像时,只有那些发生变化的层会被重新构建。这也是镜像相比于其他虚拟化技术更加轻量、小巧和快速的部分原因。
容器
容器是 镜像的可运行实例。我们可以使用 Docker CLI 或者 API 进行创建,启动,停止,移动和删除容器。我们同样可以将容器连接到一个或多个网络,为其挂载存储,甚至根据当前状态为其创建新的镜像
默认情况下,容器与其他容器及其主机相对隔离。当然,我们可以控制容器的网络、存储或其他底层子系统与其他容器或主机的隔离程度。
容器由其镜像以及在创建或启动时提供的任何配置选项定义。当容器被移除时,未存储在持久存储中的任何状态更改都会消失。
部分信息可能已经过时

















