2025-03-13 23:22:40
Docker 的由来
在日常开发中,项目要经历开发、测试、上线多个阶段。
每到一个新环境,都需要重新安装依赖、配置服务、校验版本。最繁琐的是,环境一旦不一致,就很容易:
- 开发环境没问题
- 测试环境有问题
- 线上环境又是另一套问题
但问题不一定出在代码本身,很多时候是环境差异导致的。
为了减少重复搭建环境的成本,并尽量保证各个阶段运行结果一致,Docker 应运而生。
什么是 Docker
Docker 是一个用于创建、分发和运行容器的开源平台。
它可以将应用程序和运行所需的依赖、配置一起打包,确保程序在不同环境里尽量保持一致的表现。
优势:
- 降低环境差异带来的问题
- 提升部署和迁移效率
相比传统虚拟机,容器更轻量,启动速度也通常更快,所以很适合用于开发、测试和部署场景。
Docker 的核心概念
Dockerfile是构建镜像的描述文件Image是打包后的运行模板Container是镜像运行后的实例
如果把它类比为开发流程:
Dockerfile类似源码docker build类似构建过程Image类似构建产物docker run类似启动程序- 启动后的结果就是
Container
使用流程大致是:
- 编写
Dockerfile - 使用
docker build构建Image - 使用
docker run启动Container
常用命令
命令都省略
docker前缀。
version: 查看Docker是否安装,以及当前版本信息。info:查看Docker的运行状态和基础配置信息。images:列出本机已有的镜像。search:搜索远程仓库中的镜像docker search nginx
其中OFFICIAL表示官方维护的镜像。pull:从远程仓库拉取镜像到本地。ps:查看当前正在运行的容器。
如果加上-a,则会显示所有容器,包括已经停止的容器。logs:查看容器的输出日志。build:根据Dockerfile构建镜像docker build -t my-app .
其中-t用于指定镜像名称和标签。run:基于镜像启动一个容器docker run -d -p 8080:80 --name my-nginx nginx-d后台运行-p端口映射--name指定容器名称exec:进入一个正在运行的容器,一般用于排查问题:docker exec -it my-nginx /bin/sh
如果安装了bash,也可以换成/bin/bash。stop:停止一个正在运行的容器:start:启动一个已经停止的容器: