[特殊字符] 什么是Docker?写给完全不了解容器化的你

🐳 什么是 Docker?写给完全不了解的你
先从一个真实的痛苦说起
你有没有遇到过这种情况:
在自己电脑上跑得好好的项目,发给同学或者部署到服务器上,突然就报错了?
原因几乎每次都一样——环境不一致。你的电脑上是 Python 3.11,服务器上是 Python 3.8;你装了某个版本的数据库,对方没有……
这个问题困扰了程序员很多年,直到 Docker 出现。
Docker 是什么?用一个生活例子理解
想象一下集装箱的发明。
在集装箱出现之前,货物运输是一团乱麻——各种形状的货物要分别装卸,换船就得重新来一遍。集装箱的革命性在于:把货物和它的包装方式标准化,不管是轮船、火车还是卡车,同一个箱子直接搬上去就能跑。
Docker 做的事情完全一样:
把你的代码 + 运行环境 + 所有依赖,一起装进一个标准化的"集装箱"(容器),不管在哪台机器上运行,里面的东西完全一致。
三个你必须知道的概念
📦 Image(镜像) 可以理解为"模板"或者"安装包"。它是只读的,定义了容器里有什么——比如"一个装了 Python 3.11 + 我的代码的环境"。
🚀 Container(容器) 镜像运行起来之后,就变成了容器。如果镜像是"类",容器就是"实例",可以同时跑很多个互不干扰。
🏪 Registry(仓库) 存放和分享镜像的地方,官方是 Docker Hub。就像 GitHub 存代码,Docker Hub 存镜像。你可以直接 pull 别人做好的 Nginx、MySQL 镜像,拿来即用。公司也可以在这里存放私有镜像,仅供内部使用。
你的第一个 Docker 命令
安装好 Docker Desktop 之后,打开终端试试这个:
bash
# 直接拉取并运行一个 Nginx 网页服务器
docker run -d -p 8080:80 --name my-first-nginx nginx
然后打开浏览器访问 http://localhost:8080,你会看到 Nginx 的欢迎页面。
这行命令干了什么?
docker run— 运行一个容器-d— 在后台运行(不占用终端)-p 8080:80— 把本机的 8080 端口映射到容器的 80 端口--name my-first-nginx— 给容器起个名字nginx— 使用官方的 nginx 镜像
整个过程不需要你手动安装 Nginx,Docker 会自动从 Docker Hub 下载镜像并运行。
如果 8080 端口被占用,换个端口号就行,访问 http://localhost:端口号 即可。
如果需要修改容器内部端口
拉取的 nginx 镜像默认监听 80 端口。如果你想改掉容器内的监听端口,需要做如下操作:
第一步:在本机新建 nginx.conf,内容如下:
nginx
server {
listen 4515;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
第二步:运行时用 -v 将该文件挂载进容器,覆盖容器内的默认配置:
bash
docker run -d -p 16987:4515 --name my-first-nginx -v E:\CSDN\nginx.conf:/etc/nginx/conf.d/default.conf nginx
这条命令的意思是:开放本机 16987 端口并映射到容器的 4515 端口,同时用本地的 E:\CSDN\nginx.conf 覆盖容器内的默认配置(只覆盖相同标签部分,不会将配置文件全覆盖),从而让 nginx 监听 4515 而非默认的 80。
⚠️ Windows CMD 不支持
\换行,命令需要写在一行。
常用命令速查
bash
docker ps # 查看正在运行的容器
docker ps -a # 查看所有容器(包括已停止的)
docker images # 查看本地已有的镜像
docker stop my-first-nginx # 停止容器
docker rm my-first-nginx # 删除容器
docker pull mysql:8.0 # 拉取 MySQL 镜像
总结
| 没有 Docker | 有了 Docker | |
|---|---|---|
| 环境配置 | 每台机器手动装 | 一次打包,到处运行 |
| 协作 | "你的环境和我不一样" | 大家跑同一个镜像 |
| 部署 | 运维装环境半天 | docker run 一行搞定 |
Docker 是现代开发的基础工具,不管你做前端、后端还是运维,迟早都会用到它。
下一篇:用 Docker Compose 一键启动"前端 + 后端 + 数据库"完整项目,你还会发现我们打包镜像前会规定镜像版本,这样公司任何员工都可以根据同一份文件完成打包部署 🚀
📌 觉得有帮助的话点个赞!有疑问欢迎评论区留言 👇
更多推荐


所有评论(0)