初识Docker:基本概念及安装使用(巨详细版)
一、Docker核心概念解析
1.1 容器化技术的本质
容器化是一种轻量级的虚拟化技术,通过共享主机操作系统内核实现资源隔离。与虚拟机(VM)相比,容器不包含完整的操作系统,仅打包应用及其依赖,具有启动快(秒级)、资源占用低(MB级内存)、可移植性强等优势。典型应用场景包括微服务部署、持续集成/持续交付(CI/CD)、开发环境标准化等。
1.2 Docker三大核心组件
- 镜像(Image):应用的只读模板,包含代码、运行时、系统工具等。通过分层存储机制实现复用,例如
nginx:latest镜像可能包含Ubuntu基础层、Nginx软件层等。 - 容器(Container):镜像的运行实例,通过
docker run命令创建。每个容器拥有独立进程空间、网络栈和文件系统,但共享主机内核。 - 仓库(Registry):镜像存储库,分为公有(如Docker Hub)和私有(如Harbor)。通过
docker pull/push命令实现镜像下载与上传。
1.3 Docker架构与工作原理
Docker采用C/S架构,核心组件包括:
- Docker Daemon:后台服务,负责容器创建、网络管理等。
- Docker CLI:命令行工具,通过REST API与Daemon通信。
- Docker Object:镜像、容器、网络等资源的抽象。
工作流示例:用户执行docker run -d nginx时,CLI请求Daemon检查本地是否存在nginx镜像,若不存在则从Registry拉取,最后基于镜像创建容器并启动。
二、Docker安装全指南
2.1 Linux系统安装(以Ubuntu为例)
# 卸载旧版本(如有)sudo apt-get remove docker docker-engine docker.io containerd runc# 安装依赖sudo apt-get updatesudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common# 添加Docker官方GPG密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -# 添加稳定版仓库sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"# 安装Docker CEsudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.io# 验证安装sudo docker run hello-world
关键配置:
- 非root用户操作:将用户加入
docker组(sudo usermod -aG docker $USER) - 镜像加速:编辑
/etc/docker/daemon.json添加国内源(如阿里云){"registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]}
重启服务:
sudo systemctl restart docker
2.2 Windows/macOS安装
- Windows:需Windows 10/11专业版或企业版,启用Hyper-V或WSL2后端。从Docker Desktop官网下载安装包,安装后通过GUI配置资源限制(CPU/内存)。
- macOS:支持Intel和Apple Silicon芯片,安装后需在设置中分配至少4GB内存。推荐使用Homebrew安装:
brew install --cask docker
2.3 安装后验证
执行以下命令检查状态:
docker version # 查看客户端/服务端版本docker info # 显示系统信息(镜像数、容器数等)docker system df # 查看磁盘使用情况
三、Docker基础操作实战
3.1 镜像管理
- 搜索镜像:
docker search nginx - 拉取镜像:
docker pull nginx:alpine(轻量版) - 查看本地镜像:
docker images - 删除镜像:
docker rmi nginx:alpine
3.2 容器生命周期
- 创建并启动容器:
docker run -d --name mynginx -p 8080:80 nginx# -d: 后台运行# --name: 指定容器名# -p: 端口映射(主机:容器)
- 进入容器:
docker exec -it mynginx bash # 交互式终端
- 停止/启动容器:
docker stop mynginxdocker start mynginx
- 删除容器:
docker rm mynginx # 需先停止docker rm -f mynginx # 强制删除运行中容器
3.3 数据持久化
- 绑定挂载:将主机目录映射到容器
docker run -v /host/path:/container/path nginx
- 卷管理:
docker volume create myvoldocker run -v myvol:/data nginx
四、进阶实践建议
- 镜像优化:使用多阶段构建减少镜像体积。示例Dockerfile:
```dockerfile
构建阶段
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
运行阶段
FROM alpine:latest
COPY —from=builder /app/myapp .
CMD [“./myapp”]
2. **网络配置**:创建自定义网络实现容器间通信:```bashdocker network create mynetdocker run --network=mynet -d nginx
- 安全实践:
- 避免以root用户运行容器
- 定期更新基础镜像
- 使用
docker scan检查漏洞
五、常见问题解决方案
- 端口冲突:检查
netstat -tuln | grep 8080,修改-p参数或停止占用进程。 - 镜像拉取慢:配置国内镜像源(如阿里云、腾讯云)。
- 容器无法访问:检查安全组规则(云服务器)或防火墙设置(
sudo ufw allow 8080)。
通过本文的系统学习,读者可掌握Docker从理论到实战的全流程,为后续的容器编排(如Kubernetes)学习打下坚实基础。建议从简单应用(如静态网站)开始实践,逐步过渡到复杂微服务架构。