Docker快速入门:5分钟搭建你的第一个容器
为什么选择Docker?
在接触Docker之前,你是否遇到过这些问题:
- 安装软件时依赖冲突,系统环境被搞乱
- 在开发环境能跑,到生产环境就挂了
- 想尝试新工具,但不想污染系统环境
- 每次重装系统都要花半天时间配置环境
Docker用容器技术解决了这些痛点。它像是一个轻量级的虚拟机,但启动只需秒级,资源占用极低,而且可以保证”一次构建,到处运行”。
核心概念速览
镜像(Image)
应用的”模板”,包含了运行应用所需的一切:代码、运行时、库、配置文件。
类比:就像一个”模具”,可以用它生产出无数个相同的”产品”(容器)。
容器(Container)
镜像运行时的实例,相互隔离的运行环境。
类比:用模具生产出来的实际”产品”,每个产品都是独立的。
仓库(Registry)
存储和分发镜像的服务,比如Docker Hub。
类比:就像GitHub,但是用来存放镜像的。
5分钟实战:运行你的第一个容器
1. 安装Docker
Ubuntu/Debian:
curl -fsSL https://get.docker.com | shsudo usermod -aG docker $USERnewgrp dockerCentOS/RHEL:
sudo yum install -y dockersudo systemctl start dockersudo systemctl enable docker群晖DSM: 套件中心搜索”Docker”,一键安装
验证安装:
docker --versiondocker run hello-world如果看到”Hello from Docker!”的欢迎信息,说明安装成功!
2. 运行第一个实用容器
让我们运行一个轻量级HTTP服务器:
docker run -d -p 8080:80 --name my-web nginx:alpine命令解读:
docker run- 运行容器-d- 后台运行(detached mode)-p 8080:80- 端口映射:主机8080 → 容器80--name my-web- 给容器命名nginx:alpine- 使用nginx的alpine版本(只有5MB!)
访问测试:
打开浏览器访问 http://localhost:8080,你会看到nginx的欢迎页面。
3. 常用管理命令
# 查看运行中的容器docker ps
# 查看所有容器(包括已停止的)docker ps -a
# 停止容器docker stop my-web
# 启动已停止的容器docker start my-web
# 删除容器docker rm my-web
# 查看容器日志docker logs my-web
# 进入容器内部(调试用)docker exec -it my-web sh4. 构建你自己的镜像
创建一个简单的Web应用:
# 创建项目目录mkdir my-docker-appcd my-docker-app
# 创建HTML文件cat > index.html << 'EOF'<!DOCTYPE html><html><head> <title>我的Docker应用</title> <meta charset="utf-8"></head><body> <h1>🎉 恭喜!你的Docker应用运行成功!</h1> <p>这是你用Docker部署的第一个应用</p></body></html>EOF
# 创建Dockerfilecat > Dockerfile << 'EOF'FROM nginx:alpineCOPY index.html /usr/share/nginx/html/EOF
# 构建镜像docker build -t my-first-app .
# 运行容器docker run -d -p 8081:80 --name my-app my-first-app访问 http://localhost:8081 查看你的应用!
实战场景:Docker在NAS中的应用
在NAS上使用Docker,可以轻松部署各种服务,而不需要手动配置复杂的环境:
一键部署n8n工作流平台:
docker run -d \ --name n8n \ -p 5678:5678 \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n一键部署Nextcloud网盘:
docker run -d \ --name nextcloud \ -p 8080:80 \ -v nextcloud_data:/var/www/html \ nextcloud一键部署Home Assistant智能家居:
docker run -d \ --name homeassistant \ --privileged \ -p 8123:8123 \ -v homeassistant_config:/config \ homeassistant/home-assistant:latest常见问题
Q1: Docker和虚拟机有什么区别?
A: Docker共享宿主机内核,启动快(秒级),资源占用少;虚拟机有完整操作系统,启动慢(分钟级),资源占用大。
Q2: 容器内能访问宿主机文件吗?
A: 可以,通过挂载卷(volume)或绑定挂载(bind mount):
docker run -v /host/path:/container/path ...Q3: 如何清理无用镜像和容器?
A: 使用清理命令:
# 删除所有已停止的容器docker container prune
# 删除所有未使用的镜像docker image prune -a
# 一键清理所有未使用的资源docker system prune -a下一步
现在你已经掌握了Docker的基础操作:
- ✅ 安装和运行Docker
- ✅ 管理容器生命周期
- ✅ 构建自定义镜像
- ✅ 数据持久化(通过卷)
接下来可以学习:
- Docker Compose - 用YAML文件管理多容器应用
- Docker网络 - 理解容器间通信
- Docker数据管理 - 深入掌握volume和bind mount
- Docker安全 - 加固容器环境
实战建议: 在你的NAS上尝试用Docker部署3个新服务,感受一下”一条命令部署一个应用”的便利性!
系列文章:
- Docker快速入门:5分钟搭建你的第一个容器(本文)
- Docker Compose实战:一键部署n8n工作流平台
- Docker网络完全指南:从bridge到macvlan
- Docker数据持久化:volume vs bind mount实战
- Docker安全加固:给容器加把锁
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!