Docker 简介

Docker 是一个开源的容器化平台,它把应用程序连同代码、运行时、系统库和配置一起打包成「镜像」,再在任何装有 Docker 的机器上以「容器」的形式运行,实现一次构建、到处运行。学习 Docker 是部署应用与中间件(Nginx、MySQL、Redis 等)的基本功。

什么是 Docker

传统方式把软件直接装进操作系统,换一台机器就要重新配置一遍环境。Docker 把「代码 + 依赖 + 环境」封装成只读镜像,运行镜像即可生成相互隔离的容器:

docker run -d -p 8080:80 nginx   # 拉取 nginx 镜像并以后台方式启动容器
docker ps                        # 输出:CONTAINER ID ... nginx 处于运行中
curl http://localhost:8080       # 访问返回 nginx 欢迎页即部署成功

为什么需要容器

没有容器时,部署经常遇到三类典型问题:

痛点说明
环境不一致开发、测试、生产系统差异大,代码「在我机器上能跑」却部署失败
依赖冲突两个应用需要同一软件的不同版本,装在一台机器上互相影响
迁移成本高换服务器、加节点都要重装环境,步骤多、易遗漏

容器与传统部署的区别

容器共享宿主机的操作系统内核,只把进程、文件系统、网络等隔离开,因此比整机安装更轻量、启动更快、资源占用更小;它和虚拟机的详细对比见下一章。

典型工作流:build-ship-run

Docker 的日常使用围绕构建、分发、运行三个动作展开:

docker build -t myapp:1.0 .           # build:在本地把应用构建成镜像
docker push myapp:1.0                 # ship:把镜像推送到镜像仓库
docker pull myapp:1.0                 # 在目标机器上从仓库拉取
docker run -d -p 8080:80 myapp:1.0    # run:启动容器对外提供服务

Docker 生态

除核心的镜像与容器外,还有一整套配套组件协同工作:

组件作用
镜像仓库 Registry存放并分发镜像,最常用的是 Docker Hub,也可用国内公共仓库或自建
Docker Compose用 YAML 描述多个容器,一条命令完成编排启动
Docker SwarmDocker 自带的集群编排工具,适合小规模集群
Kubernetes(K8s)目前主流的容器编排平台,负责大规模容器的调度与自愈

小结

Docker 把应用与环境一起打包成镜像,通过 build-ship-run 三步完成标准化交付;Compose 解决单机多容器编排,Swarm 与 K8s 负责集群管理,从下一章起逐步掌握这套体系。

笔记加载中…