Docker 入门教程(一):从概念到第一个容器
文章目录
- 🐳 Docker 入门教程(一):从概念到第一个容器
- 1. Docker 是什么?
- 2. Docker 的核心概念
- 3. 安装 Docker
- 4. 运行你的第一个 Docker 容器
🐳 Docker 入门教程(一):从概念到第一个容器
Docker 是现代开发和运维中的重要工具之一,它简化了软件交付流程、提升了部署效率。本文将带你从 0 开始认识 Docker,并亲手运行第一个容器。
1. Docker 是什么?
Docker 是一个开源容器化平台,用于构建、运行和管理容器(Container)。容器是一种轻量、可移植、自包含的软件打包方式,它将代码及其依赖一起封装,使软件“在任何地方运行”变得可能。
容器 vs 虚拟机
特性 | 容器(Docker) | 虚拟机(VM) |
---|---|---|
启动速度 | 秒级 | 分钟级 |
占用资源 | 少 | 多 |
是否需要完整操作系统 | 否 | 是 |
可移植性 | 高 | 较低 |
使用场景 | 微服务、CI/CD、快速部署 | 全系统隔离 |
2. Docker 的核心概念
理解 Docker 的几个核心概念是掌握它的第一步:
镜像(Image)
镜像是一个只读的模板,用于创建容器。你可以将它理解为系统快照,比如一个包含了 Python 解释器的 Ubuntu 环境。
容器(Container)
容器是镜像的运行实例。它是一个运行中的轻量进程,彼此隔离,启动快,可销毁可重建。
Dockerfile
Dockerfile 是构建镜像的脚本文件,包含了系统安装、环境配置、依赖安装等指令。
仓库(Registry)
镜像存储的地方,最常见的是 Docker Hub,你也可以搭建自己的私有 Registry。
3. 安装 Docker
Docker 支持主流操作系统,安装步骤略有不同:
🪟 Windows/macOS
- 推荐使用 Docker Desktop
- 安装后自动包含 Docker CLI、Compose、Kubernetes(可选)
🐧 Linux(以 Ubuntu 为例)
# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc# 更新软件包
sudo apt update# 安装依赖
sudo apt install ca-certificates curl gnupg# 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 设置仓库
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装 Docker 引擎
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io# 启动并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker
测试是否安装成功
docker version
4. 运行你的第一个 Docker 容器
现在我们来运行第一个容器:
Hello World 示例
docker run hello-world
解释:
docker run
: 运行一个容器hello-world
: Docker 官方提供的测试镜像
这条命令会做以下事情:
- 本地查找是否已有
hello-world
镜像 - 如果没有,就从 Docker Hub 下载
- 创建并运行容器,输出一段欢迎信息后自动退出
输出示例:
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
常见命令预览
命令 | 说明 |
---|---|
docker ps | 查看运行中的容器 |
docker ps -a | 查看所有容器(包括已退出) |
docker images | 查看本地镜像 |
docker rm [容器ID] | 删除容器 |
docker rmi [镜像ID] | 删除镜像 |