docker知识
- 手机
- 2025-08-27 15:39:02

Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。通过 Docker,开发者可以轻松地在不同的环境中运行应用程序,而无需担心环境差异导致的问题。以下是关于 Docker 的一些核心概念和知识点:
一、Docker 的核心概念
容器(Container)
容器是 Docker 的核心单元,它是一个轻量级的、独立的、可执行的软件包,包含了运行应用程序所需的所有内容(代码、运行时、库、环境变量等)。容器与虚拟机不同,它共享主机操作系统的内核,因此更加高效。镜像(Image)
镜像是容器的基础模板,类似于虚拟机的快照。镜像是只读的,包含应用程序及其运行环境。容器是由镜像启动的,镜像可以通过 Dockerfile 构建。Dockerfile
Dockerfile 是一个文本文件,包含了一系列指令,用于定义如何构建一个 Docker 镜像。常见的指令包括 FROM(指定基础镜像)、RUN(执行命令)、COPY(复制文件)、CMD(指定默认命令)等。仓库(Repository)
仓库是用来存储和分发镜像的地方,类似于代码托管平台(如 GitHub)。Docker Hub 是官方的公共镜像仓库,用户也可以搭建私有仓库。网络(Network)
Docker 提供了多种网络模式(如桥接模式、主机模式、无网络模式等),用于容器之间的通信。可以通过自定义网络实现容器间的隔离或互联。卷(Volume)
卷是 Docker 中用于持久化数据的机制,独立于容器的生命周期。数据卷可以挂载到容器中,确保即使容器被删除,数据仍然保留。二、Docker 的架构
Docker 的架构基于客户端-服务器模型,主要包括以下组件:
Docker Client
用户通过命令行工具(CLI)与 Docker Daemon 进行交互。Docker Daemon
Docker 的后台服务,负责管理镜像、容器、网络和卷等资源。Docker Registry
存储和分发镜像的服务,默认使用 Docker Hub。Docker Engine
包括 Docker Daemon 和容器运行时,是 Docker 的核心引擎。三、常用 Docker 命令 1. 镜像相关 查看本地镜像:docker images 拉取镜像:docker pull <image_name>:<tag> 删除镜像:docker rmi <image_id> 2. 容器相关
启动容器:
docker run [options] <image_name> [command]常用选项:
-d:后台运行-p:端口映射(主机端口:容器端口)-v:挂载数据卷(主机路径:容器路径)--name:指定容器名称查看运行中的容器:
docker ps查看所有容器(包括停止的):
docker ps -a停止容器:
docker stop <container_id>删除容器:
docker rm <container_id> 3. 网络相关 查看网络:docker network ls 创建自定义网络:docker network create <network_name> 4. 日志与调试 查看容器日志:docker logs <container_id> 进入容器内部:docker exec -it <container_id> /bin/bash四、Docker Compose
Docker Compose 是一个工具,用于定义和运行多容器的 Docker 应用程序。通过一个 YAML 文件(docker-compose.yml),可以配置多个服务的镜像、网络、卷等。
示例 docker-compose.yml version: '3' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: example 常用命令 启动服务:docker-compose up -d 停止服务:docker-compose down五、Docker 的优势 轻量化:容器比虚拟机更轻量,启动速度快,资源占用少。一致性:开发、测试和生产环境保持一致,避免“在我机器上能运行”的问题。隔离性:每个容器相互隔离,互不干扰。可移植性:镜像可以在任何支持 Docker 的平台上运行。生态丰富:Docker Hub 提供了大量现成的镜像,方便快速部署。
六、Docker 的应用场景 微服务架构:为每个服务创建独立的容器,便于管理和扩展。持续集成/持续交付(CI/CD):通过 Docker 实现自动化的构建、测试和部署流程。开发环境标准化:团队成员使用相同的容器环境,减少环境差异带来的问题。快速部署:通过镜像快速部署应用,提升效率。实验环境:快速搭建和销毁实验环境,节省资源。
七、常见问题与解决方案
镜像体积过大
使用多阶段构建(Multi-stage Build)优化镜像大小。示例:FROM node:16 AS build WORKDIR /app COPY . . RUN npm install && npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html容器无法访问外部网络
检查 Docker 的网络配置,确保容器使用桥接模式。使用 --network host 参数让容器共享主机网络。数据丢失
使用数据卷(Volume)或绑定挂载(Bind Mount)持久化数据。