核心概念
Docker 是一种用于开发、部署和运行应用程序的开源平台,它通过容器化技术实现应用程序的隔离和封装。以下是 Docker 的核心概念:
1. 容器(Container)
容器是 Docker 的核心组件,是一个轻量级、可移植的运行时环境,包含应用程序及其所有依赖(如库、配置文件等)。
- 基于镜像运行。
- 与宿主机和其他容器隔离。
- 启动速度快,资源占用少。
示例:运行一个 Nginx 容器:
bash
docker run -d --name my-nginx nginx2. 镜像(Image)
镜像是容器的静态模板,包含运行应用程序所需的所有文件和配置。
- 分层存储,每一层代表一个修改(如安装软件、添加文件)。
- 可以通过 Dockerfile 构建。
- 存储在镜像仓库(如 Docker Hub)中。
示例:拉取一个 Ubuntu 镜像:
bash
docker pull ubuntu3. Dockerfile
Dockerfile 是一个文本文件,包含一系列指令,用于自动化构建 Docker 镜像。
FROM:指定基础镜像。RUN:执行命令。COPY:复制文件到镜像。CMD:设置容器启动时执行的命令。
示例:
dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
CMD ["nginx", "-g", "daemon off;"]4. 仓库(Repository)
仓库是用于存储和分发 Docker 镜像的地方,可以是公共的(如 Docker Hub)或私有的。
- 一个仓库可以包含多个镜像版本(通过标签区分)。
- 支持镜像的推送(docker push)和拉取(docker pull)。
5. 注册中心(Registry)
注册中心是存储 Docker 镜像的服务器,Docker Hub 是最常用的公共注册中心。
- 支持私有注册中心(如 Harbor、AWS ECR)。
- 提供镜像的版本管理和访问控制。
示例:登录 Docker Hub:
bash
docker login6. 网络(Network)
Docker 网络用于实现容器之间的通信。
类型
Bridge:默认网络模式,容器通过虚拟网桥通信。Host:容器直接使用宿主机的网络栈。Overlay:用于跨主机的容器通信(如 Docker Swarm)。
示例:创建自定义网络:
bash
docker network create my-network7. 数据卷(Volume)
数据卷是用于持久化容器数据的机制,独立于容器的生命周期。
- 数据卷可以在容器之间共享。
- 数据存储在宿主机上,即使容器删除,数据也不会丢失。
示例:创建并使用数据卷:
bash
docker volume create my-volume
docker run -d --name my-container -v my-volume:/data nginx8. Docker Compose
Docker Compose 是用于定义和运行多容器 Docker 应用的工具。
- 使用 docker-compose.yml 文件定义服务、网络和数据卷。
- 支持一键启动、停止和管理多个容器。
示例:docker-compose.yml 文件
yaml
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./html:/var/www/html
depends_on:
- php
networks:
- app-network
php:
build: ./php
container_name: php83
volumes:
- ./html:/var/www/html
networks:
- app-network
mysql:
image: mysql:8.0
container_name: mysql80
environment:
MYSQL_ROOT_PASSWORD: 123123
MYSQL_DATABASE: dev
MYSQL_USER: dev
MYSQL_PASSWORD: 123123
ports:
- "3307:3306" # 将容器的 3306 端口映射到宿主机的 3306 端口
volumes:
- ./mysql/data:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge9. Docker Swarm
Docker Swarm 是 Docker 官方的集群管理工具,用于管理多个 Docker 主机。
- 支持高可用和负载均衡。
- 提供服务的自动扩展和故障恢复。
示例:初始化 Swarm 集群:
bash
docker swarm init10. Docker Engine
Docker Engine 是 Docker 的核心组件,包括 Docker 守护进程(
dockerd)和 CLI 客户端(docker)。
- 负责构建、运行和管理容器。
- 提供 REST API 供其他工具调用。
