Linux-Tutorial 项目中的 Docker 快速入门指南
为什么选择 Docker
Docker 是一个革命性的容器化技术,它允许开发者将应用程序及其所有依赖项打包到一个标准化的单元中,从而实现"一次构建,随处运行"的理念。通过 Docker,开发者可以:
- 使用任何编程语言和工具链构建应用
- 确保应用在不同环境(开发、测试、生产)中的一致性
- 快速部署和扩展应用
- 轻松共享和协作开发
Docker 基础概念
容器与镜像
- 镜像(Image):类似于虚拟机的模板,包含运行应用所需的所有文件和配置
- 容器(Container):镜像的运行实例,类似于轻量级的虚拟机
核心组件
- Docker 引擎:核心服务进程
- Docker 官方仓库:官方镜像仓库
- Docker Compose:多容器应用编排工具
- Docker Swarm:原生集群管理工具
Docker 安装与配置
安装 Docker
Docker 提供社区版(CE)和企业版(EE),个人开发者通常使用 CE 版本。安装方法因操作系统而异:
-
Linux 系统(以 Ubuntu 为例):
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
-
Windows/macOS: 下载 Docker Desktop 安装包并按照向导安装
配置镜像加速
国内用户建议配置镜像加速以提升下载速度:
- 创建或修改
/etc/docker/daemon.json
文件 - 添加以下内容(以网易云镜像为例):
{ "registry-mirrors": ["https://hub-mirror.c.163.com"] }
- 重启 Docker 服务:
sudo systemctl daemon-reload sudo systemctl restart docker
容器操作指南
容器生命周期管理
-
创建并运行容器:
docker run -it ubuntu /bin/bash
-
查看运行中的容器:
docker ps
-
停止容器:
docker stop <容器ID>
-
删除容器:
docker rm <容器ID>
资源限制
-
限制内存使用:
docker run -it -m 300M ubuntu /bin/bash
-
限制 CPU 使用:
docker run -it --cpus 0.5 ubuntu /bin/bash
镜像管理
常用命令
-
拉取镜像:
docker pull ubuntu:18.04
-
查看本地镜像:
docker images
-
删除镜像:
docker rmi ubuntu:18.04
构建自定义镜像
通过 Dockerfile 构建镜像:
- 创建 Dockerfile 文件
- 编写构建指令
- 执行构建命令:
docker build -t my-image .
网络与端口
端口映射
将容器端口映射到主机端口:
docker run -p 8080:80 nginx
容器间通信
创建自定义网络并连接容器:
docker network create my-network
docker run --net=my-network --name container1 my-image
docker run --net=my-network --name container2 my-image
Dockerfile 最佳实践
基础指令
FROM ubuntu:18.04
LABEL maintainer="your.email@example.com"
RUN apt-get update && apt-get install -y python3
COPY . /app
WORKDIR /app
CMD ["python3", "app.py"]
优化建议
- 使用
.dockerignore
文件排除不必要的文件 - 合并 RUN 指令减少镜像层数
- 按依赖频率排序指令,利用缓存
- 使用多阶段构建减小镜像体积
安全注意事项
- 避免使用 root 用户运行容器
- 定期更新基础镜像
- 限制容器资源使用
- 使用只读文件系统:
docker run --read-only -it ubuntu /bin/bash
常见问题解决
-
容器启动后立即退出:
- 确保有前台进程运行
- 使用
-it
参数保持交互
-
权限问题:
- 使用
--user
指定非 root 用户 - 适当设置文件权限
- 使用
-
存储空间不足:
- 定期清理无用镜像和容器
- 调整 Docker 存储驱动配置
进阶学习建议
- 学习 Docker Compose 管理多容器应用
- 了解 Kubernetes 容器编排
- 探索 CI/CD 中的 Docker 应用
- 研究微服务架构与容器化的结合
通过掌握这些 Docker 基础知识,您已经具备了使用容器技术的基本能力。随着实践的深入,您会发现 Docker 在现代应用开发和部署中的强大威力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考