Docker 是一个用于构建、发布和运行程序的开源项目。
示例
# 打印 "hello world"
docker run dockerinaction/hello_world
这个示例中 Docker 做了这些事情:
- 在本地计算机上查找镜像
dockerinaction/hello_world
,结果并未找到。 - 继续在 Docker Hub 上查找镜像,结果找到了该镜像。
- 下载并安装该镜像。
- 创建了一个容器并启动程序。
Docker Hub 是 Docker 公司提供的公共注册表。
容器
Docker 不使用硬件虚拟化,且不提供容器技术。Docker 使用了 Linux 的命名空间和 cgroups 的概念,使容器更容易使用。
不同于容器,虚拟机 提供虚拟硬件,并且通常虚拟机的创建时间很长。虚拟机和 Docker 是两种互补的技术。
运行 Docker 会在(同个)用户空间里运行两个程序:
- Docker 引擎(守护进程)- 该进程应该始终在运行;
- Docker CLI - 用于处理启动、停止或安装软件等用户交互。
每个在 Docker 运行的容器都会有自己的用户空间,容器内运行的程序只能访问它们自己的内存和资源。
Docker 使用了 10 种主要的系统特性来构建容器,具体见书 P7 。
镜像
通常来说,Docker 镜像是一张有关在容器内运行的程序可用的所有文件的捆绑快照。可以根据需要从一个镜像创建尽可能多的容器。
镜像是 Docker 生态环境中的可运输单元。
Docker 特性
Docker 解决了以下几个问题:
- 组织性 - 通过容器避免了同一计算机中不同应用程序之间的依赖项冲突;
- 可移植性 - Docker 在 Linux 上是本地运行的,并为 macOS 和 Windows 环境提供了虚拟机。这使得应用程序可在不同操作系统中执行。
- 安全 - 保护计算机免受容器内运行的应用程序的侵害。
帮助
# 如何使用 docker
docker help
# 查看具体命令的使用
docker help <命令>