Docker 是现代开发的“装机神器”。本文记录一下镜像构建、容器运行、数据持久化及云端部署的全流程。
一、 📦 镜像管理 (Image Management)
镜像(Image)是容器的只读模板,它是容器运行的基础。
拉取镜像:
docker pull nginx:latest # 📥 从 Docker Hub 拉取最新版镜像
查看本地镜像:
docker images # 📋 列出本地所有已下载的镜像
打包与加载 (离线迁移):
docker save -o mynginx.tar nginx # 💾 将镜像导出为 tar 文件
docker load -i mynginx.tar # 📤 从 tar 文件恢复镜像
删除镜像:
docker rmi nginx:latest # 🗑️ 删除指定的本地镜像
二、 📂 数据卷管理 (Volume Management)
数据卷是 Docker 管理数据的正规途径,数据存储在宿主机的 /var/lib/docker/volumes/ 目录下,即使删除容器,数据依然存在。
创建数据卷:
docker volume create ngconf # 🏗️ 显式创建一个命名卷
查看所有数据卷:
docker volume ls # 📋 列出所有已创建的数据卷
查看卷的详细信息:
docker volume inspect ngconf # 🔍 查看卷的存储路径 (Mountpoint)
删除数据卷:
docker volume rm ngconf # 🗑️ 删除不再使用的数据卷三、 🚀 容器运行与数据挂载 (Container & Volume)
容器是镜像的运行实例。为了保证容器重启后数据不丢失,我们必须使用“挂载”技术。
后台运行并持久化数据:
docker run -d --name app01 \
-v /app/nghtml:/usr/share/nginx/html \
-v ngconf:/etc/nginx/conf.d \
-p 80:80 nginx
参数详解:
-d: 后台运行,不卡终端。--name: 命名,避免使用难记的 ID。-v: 挂载。/app/nghtml为绑定挂载,ngconf为自动管理的命名卷。-p: 映射宿主机端口到容器端口。
四、 🛠️ 容器状态与生命周期
掌握这些命令,你就是容器环境的主宰。
查看容器状态:
docker ps -a # 📋 查看运行中和已停止的全部容器
进入容器内部:
docker exec -it app01 /bin/bash # 💻 获取容器的交互式 Shell
停止与删除容器:
docker stop app01 # 🛑 优雅地停止容器
docker rm app01 # 🧹 删除已停止的容器
五、 🏗️ 环境固化与云端分发 (Commit & Push)
当你修改好环境配置,想把这份“成果”保存并分享时,请使用以下命令。
提交修改为新镜像:
docker commit -m "自定义配置版本" app01 mynginx:v1.0
# 💾 将容器的修改快照固化为新镜像
打标签 (准备推送):
docker tag mynginx:v1.0 hxsy129/mynginx:v1.0
# 🏷️ 将镜像重命名为符合仓库规范的格式 (用户名/镜像名:标签)
推送至 Docker Hub:
docker login # 🔑 登录到你的 Docker Hub
docker push hxsy129/mynginx:v1.0 # 🚀 将镜像推送到云端仓库
💡 记录者的避坑指南 (Pro Tips)
命名逻辑:
rm是删除容器 (Remove),rmi是删除镜像 (Remove Image)。带i的就是针对 Image 的,记住了这一点就不会乱删了!卷的作用:尽量使用命名卷(如
ngconf),Docker 会帮你把数据存放在/var/lib/docker/volumes/,这比绑定本地路径更安全且不易出错。网络与代理:在执行
push或login时,如果遇到connection refused,请检查宿主机的代理配置,确保 Docker 的 Daemon 代理已正确开启。拒绝乱码:启动容器时永远使用
--name指定名称,这能让你的 Docker 管理变得极其简洁。