Docker详解及其使用方法
Docker 是一个开源的应用容器化平台,提供一种轻量级虚拟化解决方案,用于打包、分发和运行应用程序及其依赖环境。它的核心是通过容器(Container)技术,让开发者能够在任何地方运行应用程序,而不必担心环境配置差异。
一、Docker 的核心概念
-
镜像 (Image)
- 类似于操作系统的快照或模板。
- 它是一个只读的、包含了应用程序运行所需的环境、依赖项和配置的文件系统。
- 镜像可以用来启动容器。
-
容器 (Container)
- 基于镜像创建的实例,类似于虚拟机,但更加轻量。
- 容器是独立的,可以运行应用程序,并与主机系统隔离。
-
Dockerfile
- 用于定义镜像构建过程的脚本文件。
- 通过描述一系列命令,生成一个镜像。
-
Docker Engine
- Docker 的运行时环境,包括 Docker 守护进程(Daemon)和客户端。
- 它负责镜像管理、容器运行等核心功能。
-
Docker Hub
- 官方的镜像仓库。
- 用户可以从中下载或上传自己的镜像。
二、Docker 的特点
-
轻量级
- 容器共享主机操作系统的内核,不需要为每个容器启动一个独立的操作系统,资源占用小。
-
快速启动
- 容器可以在几秒钟内启动,而虚拟机通常需要更长时间。
-
跨平台一致性
- 通过镜像,确保开发、测试和生产环境一致。
-
模块化
- 通过容器将应用程序分解成多个独立的服务模块,方便管理和扩展。
三、Docker 的安装与配置
1. 在 Linux 系统上安装 Docker
以 Ubuntu 为例:
# 更新系统包
sudo apt-get update
# 安装依赖
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 官方软件库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker CE(社区版)
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker version
2. 配置非 root 用户使用 Docker
sudo usermod -aG docker $USER
newgrp docker
四、Docker 的基本使用方法
1. 镜像管理
• 查看本地镜像:
docker images
• 下载镜像:
docker pull <镜像名>:<标签>
# 示例:下载最新版的 Ubuntu 镜像
docker pull ubuntu:latest
• 删除镜像:
docker rmi <镜像ID或名称>
2. 容器管理
• 启动容器:
docker run -it --name <容器名> <镜像名>
# 示例:启动一个 Ubuntu 容器
docker run -it --name my-ubuntu ubuntu
• 列出运行中的容器:
docker ps
• 列出所有容器(包括已停止):
docker ps -a
• 停止容器:
docker stop <容器ID或名称>
• 删除容器:
docker rm <容器ID或名称>
• 进入容器:
docker exec -it <容器ID或名称> bash
3. 构建镜像
• 创建一个 Dockerfile 文件:
# 示例内容
FROM ubuntu:latest
RUN apt-get update && apt-get install -y nginx
CMD ["nginx", "-g", "daemon off;"]
• 构建镜像:
docker build -t <镜像名>:<标签> .
# 示例:
docker build -t my-nginx:1.0 .
4. 网络管理
• 列出 Docker 网络:
docker network ls
• 创建网络:
docker network create <网络名>
• 将容器连接到指定网络:
docker network connect <网络名> <容器名>
五、Docker 的应用场景
1. 开发与测试环境
• 通过镜像快速创建一致的开发和测试环境。
2. 微服务架构
• 将应用拆分为多个容器,分别部署。
3. CI/CD 管道
• 利用 Docker 集成到持续集成和部署流程中。
4. 分布式系统
• 结合 Docker Compose 和 Kubernetes 进行容器编排。
六、Docker 在 Linux 系统中的表现
• Docker 在 Linux 系统上运行时,依赖于 Linux 内核的 cgroups 和 namespaces,通过隔离和限制资源,运行一个或多个容器。
• 在文件系统中,Docker 的容器和镜像数据通常存储在 /var/lib/docker 下。容器类似于系统中的一个独立的进程,它并不是一个传统意义上的目录(如 direction),而是运行环境中的一个逻辑单位,使用底层存储引擎(如 overlay2)实现文件共享和分层管理。
如果你需要详细实践某个场景或了解更高级的使用方法,可以告诉我!