-
Docker Engine(核心引擎)
Docker Daemon:后台服务进程,负责管理容器、镜像、网络等
REST API:提供接口让外部程序与 Daemon 通信
Docker CLI:命令行工具,就是你在终端输入的 docker run、docker build 这些命令
-
Docker Image(镜像)
容器的"模板",只读的,类似一个打包好的系统快照
由多个层(Layer) 叠加构成,每一层对应 Dockerfile 里的一条指令
存储在本地或镜像仓库中
-
Docker Container(容器)
镜像运行起来就是容器,是真正干活的单元
每个容器相互隔离,有自己的文件系统、进程、网络
可以启动、停止、删除,删除后数据默认不保留
-
Dockerfile
一个文本文件,描述如何构建镜像的步骤
常见指令包括 FROM、RUN、COPY、CMD、EXPOSE 等
-
Docker Registry(镜像仓库)
存储和分发镜像的地方
Docker Hub 是官方公共仓库
也可以搭建私有仓库,比如 Harbor
-
Docker Network(网络)
容器之间或容器与外部通信的机制,主要有几种模式:
bridge:默认模式,容器通过虚拟网桥通信
host:直接使用宿主机网络
none:完全隔离,无网络
overlay:跨主机容器通信,用于集群场景
-
Docker Volume(数据卷)
解决容器数据持久化的问题
容器删除后数据仍然保留
也可以在多个容器之间共享数据
-
Docker Compose
用一个 docker-compose.yml 文件定义和管理多容器应用
一条 docker compose up 命令就能启动整套服务(比如同时启动应用、数据库、缓存)
-
Docker Swarm,实际使用k8s比较多
Docker 原生的容器编排工具
把多台机器组成一个集群,统一调度和管理容器
功能比 Kubernetes 简单,但上手更容易
进阶:
使用REST API,直接来控制docker
举例:
bash
sudo curl --unix-socket /var/run/docker.sock -X POST \
-H "Content-Type: application/json" \
-d '{"Image": "alpine", "Cmd": ["echo", "hello API"]}' \
http://localhost/containers/create?name=my-api-test
# localhost是地址,containers/create是接口,其他的请求数据
在本地创建镜像仓库:
运行仓库容器 (docker自带) --> 上传镜像到本地仓库