Docker 是什么

Docker 是用 Go 语言开发的开源容器引擎,通过容器化技术实现轻量级虚拟化。

与传统虚拟机的核心区别:Docker 容器共享宿主机内核,不需要运行完整的操作系统,因此启动速度快(秒级)、资源占用少。


为什么选择容器化

  • 灵活性:复杂应用可以拆分为多个独立容器
  • 轻量级:共享内核,资源占用远低于虚拟机
  • 快速部署:秒级启动,镜像一次构建到处运行
  • 可移植性:开发、测试、生产环境完全一致
  • 易扩展:水平扩展只需增加容器实例

三个核心概念

镜像(Image)

只读模板,包含应用代码、运行时、依赖库和配置。类比:镜像是「模具」,容器是用模具生产的「产品」。

容器(Container)

镜像的运行实例,相互隔离,共享宿主机内核。容器本质上是宿主机上的一个进程,通过 namespace 实现隔离,通过 cgroups 限制资源。

仓库(Registry)

存储和分发镜像的服务。Docker Hub 是公共仓库,企业通常搭建私有仓库(Harbor)。


安装 Docker

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加阿里云镜像源(国内推荐)
yum-config-manager --add-repo \
  https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装 Docker CE
yum install docker-ce -y

# 启动服务
systemctl start docker
systemctl enable docker

常用命令速查

镜像操作

docker pull nginx:latest          # 拉取镜像
docker images                     # 列出本地镜像
docker rmi nginx:latest           # 删除镜像
docker save nginx > nginx.tar     # 导出镜像
docker load < nginx.tar           # 导入镜像

容器操作

# 运行容器
docker run -d -p 80:80 --name web nginx

# 查看运行中的容器
docker ps

# 查看所有容器(包括已停止)
docker ps -a

# 进入容器
docker exec -it web /bin/bash

# 停止/启动/删除容器
docker stop web
docker start web
docker rm web

# 查看容器日志
docker logs -f web

Docker vs 虚拟机

对比项Docker虚拟机
启动时间秒级分钟级
内存占用MB 级GB 级
隔离性进程级完全隔离
性能损耗接近原生较大
镜像大小MB 级GB 级