Docker初步了解
1. 核心概念:别把 Docker 想复杂了
我们用“手机应用商店”来类比,三秒钟理解 Docker:
| 术语 | 类比 | 解释 |
|---|---|---|
| 镜像 (Image) | App 安装包 | 它是静止的、只读的(比如微信安装包)。 |
| 容器 (Container) | 运行中的 App | 你点开微信,它跑起来了,这就是容器。 |
| 仓库 (Repository) | 应用商店 | 你去哪里下载安装包(通常指 Docker Hub)。 |
一句话总结:我们从商店下载“镜像”,把它运行成“容器”。
2. 每天必用的 5 个“生存命令”
这 5 个命令覆盖了你 90% 的日常操作:
① 找安装包 (Pull)
-
docker pull <名字>-
示例:
docker pull nginx -
人话:去应用商店把 Nginx 下载到本地。
-
② 运行程序 (Run) - 最核心
-
docker run -d -p 80:80 nginx-
人话:在后台启动 Nginx,并开放端口。
-
③ 查看状态 (Ps)
-
docker ps-
人话:打开任务管理器,看看现在有哪些 App 正在运行。
-
④ 停止运行 (Stop)
-
docker stop <容器ID>-
人话:把这个 App 关掉(数据保留,随时能再开)。
-
⑤ 删除清理 (Rm/Rmi)
-
docker rm <容器ID>(删容器/记录) -
docker rmi <镜像名>(删镜像/安装包)-
人话:前者是清除运行记录,后者是彻底卸载安装包释放硬盘。
-
3. docker run 万能填空公式
docker run 是参数最多的命令,新手只要记住这个公式:
docker run -d --name <起名> -p <宿主端口>:<容器端口> -v <宿主路径>:<容器路径> -e <变量名>=<值> <镜像名>
| 参数 | 场景 | 例子 | 解释 |
|---|---|---|---|
-d |
后台运行 | (必加) | 不加这个,你关闭终端窗口,服务就挂了。 |
--name |
起名字 | --name my-web |
不然 Docker 会随机起个怪名字,管理起来很麻烦。 |
-p |
开门(端口) | -p 8080:80 |
左边是你电脑的端口。意思是访问你电脑的 8080,就是访问容器的 80。 |
-v |
存数据 | -v /data:/app |
左边是你电脑的文件夹。把数据存在你电脑上,防止容器删除后数据丢失。 |
-e |
改配置 | -e PASSWORD=123 |
不想改代码配置?用这个环境变量参数直接覆盖配置(如数据库密码)。 |
4. 遇到 Bug 怎么修?(排错三板斧)
当容器启动失败或者运行不正常时,用这三招:
第一招:看日志 (Logs)
-
命令:
docker logs -f <容器名> -
作用:就像看程序的控制台输出。
-
技巧:
-f代表实时刷新,按Ctrl+C退出。
第二招:钻进容器里 (Exec)
-
命令:
docker exec -it <容器名> bash -
作用:这就像远程桌面连进了这个容器内部。你可以在里面输入
ls,cat查看文件是否都在。 -
技巧:如果
bash报错,尝试换成sh。
第三招:拿出来修 (Cp)
-
命令:
docker cp <容器名>:<容器路径> <本地路径> -
作用:把容器里的配置文件拷贝到电脑桌面上,改好了再拷回去。
-
反向操作:
docker cp <本地文件> <容器名>:<容器路径>
5. 进阶技能:定制你的镜像 (Dockerfile)
如果别人的镜像不满足需求,我们就自己造一个。在项目根目录新建文件 Dockerfile:
# 1. 选底座:找一个装好 Python 的系统 FROM python:3.9-slim # 2. 定目录:在容器里创建工作文件夹 WORKDIR /app # 3. 搬运工:把当前代码拷贝进去 COPY . . # 4. 启动令:容器启动时自动执行的命令 CMD ["python", "app.py"]
构建命令:docker build -t my-app:v1 .(注意最后有个点 .,代表使用当前目录的 Dockerfile)
6. 懒人神器:Docker Compose
如果你觉得 docker run 命令太长记不住,请一定要用 Docker Compose。它用一个 docker-compose.yml 文件代替敲命令。
常用命令:
-
一键启动:
docker compose up -d -
一键销毁:
docker compose down -
查看日志:
docker compose logs -f
7. 维护与清理 (给电脑瘦身)
Docker 用久了,磁盘红了怎么办?
-
体检:
docker system df(看看到底是谁占了空间) -
安全清理:
docker container prune(只删已停止的容器)(docker image prune或docker rmi这两个命令是删除镜像) -
暴力清理:
docker system prune -a-
警告:这会删除所有未运行的容器和所有未被使用的镜像,请慎用!
-
💡 新手避坑“三不要”
-
数据不要留在容器里:重要数据(如数据库文件、用户上传图片)一定要用
-v挂载到宿主机。 -
不要在容器里改代码:容器一重启,你的修改可能就没了。正确做法是改本机代码,然后重启容器。
-
不要只 Stop 不 Rm:
docker stop只是关机,容器还在占位置。如果确定不用了,记得docker rm清理掉。
更多推荐
所有评论(0)