Docker 教程

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
谁适合阅读本教程?
本教程适合运维工程师及后端开发人员,通过本教程你可以一步一步了解 Docker 的使用。
阅读本教程前,您需要了解的知识
在阅读本教程前,你需要掌握 Linux 的常用命令。你可以通过本站的 Linux 教程 来学习相关命令。
Docker 的应用场景
微服务架构:每个服务独立容器化,便于管理和扩展。
CI/CD流水线:与 Jenkins/GitLab CI 集成,实现自动化构建和测试。
开发环境标准化:新成员一键启动全套依赖服务(如数据库、消息队列)。
云原生基础:Kubernetes 等编排工具基于 Docker 管理容器集群。
核心优势
- 跨平台一致性:解决"在我机器上能跑"的问题,确保开发、测试、生产环境一致。
- 资源高效:容器直接共享主机内核,无需虚拟化整个操作系统,节省内存和 CPU。
- 快速部署:秒级启动容器,支持自动化扩缩容。
- 隔离性:每个容器拥有独立的文件系统、网络和进程空间。
核心概念
- 容器(Container):轻量化的运行实例,包含应用代码、运行时环境和依赖库。基于镜像创建,与其他容器隔离,共享主机操作系统内核(比虚拟机更高效)。
- 镜像(Image):只读模板,定义了容器的运行环境(如操作系统、软件配置等)。通过分层存储(Layer)优化空间和构建速度。
- Dockerfile:文本文件,描述如何自动构建镜像(例如指定基础镜像、安装软件、复制文件等)。
- 仓库(Registry):存储和分发镜像的平台,如 Docker Hub(官方公共仓库)或私有仓库(如 Harbor)。
基本命令
实例
# 拉取镜像(如官方Nginx镜像)
docker pull nginx
# 运行容器(-d 后台运行,-p 映射端口)
docker run -d -p 80:80 nginx
# 查看运行中的容器
docker ps
# 构建镜像(基于当前目录的Dockerfile)
docker build -t my-app .
# 进入容器内部
docker exec -it <容器ID> /bin/bash
docker pull nginx
# 运行容器(-d 后台运行,-p 映射端口)
docker run -d -p 80:80 nginx
# 查看运行中的容器
docker ps
# 构建镜像(基于当前目录的Dockerfile)
docker build -t my-app .
# 进入容器内部
docker exec -it <容器ID> /bin/bash
相关链接
Docker 官网:https://www.docker.com
Github Docker 源码:https://github.com/docker