当前位置: 首页 > news >正文

Docker常用命令笔记

Docker常用命令笔记


一、Docker 基础命令

1. 查看 Docker 状态

# 查看 Docker 版本信息
docker version# 查看 Docker 系统信息(包括镜像、容器、存储驱动等)
docker info# 查看 Docker 磁盘占用情况
docker system df

二、镜像管理

1. 拉取镜像

# 从远程仓库拉取镜像(默认拉取 latest 标签)
docker pull nginx# 指定标签拉取镜像
docker pull nginx:1.23

2. 列出本地镜像

# 列出所有本地镜像
docker images# 仅显示镜像 ID
docker images -q# 显示所有镜像(含中间层镜像)
docker images -a

3. 构建镜像

# 使用当前目录的 Dockerfile 构建镜像,并指定标签
docker build -t my-nginx:1.0 .# 构建时指定构建参数(如设置环境变量)
docker build --build-arg VERSION=1.0 -t my-app .

4. 删除镜像

# 删除指定镜像(通过镜像 ID 或名称)
docker rmi nginx:1.23# 删除所有未使用的镜像(悬空镜像)
docker image prune -a

三、容器操作

1. 运行容器

# 启动一个交互式容器(终端可输入命令)
docker run -it ubuntu bash# 后台运行容器(并指定名称)
docker run -d --name my-container nginx# 端口映射(将宿主机 8080 映射到容器 80)
docker run -p 8080:80 nginx# 设置环境变量
docker run -e MY_ENV_VAR=value nginx# 挂载目录(将宿主机 /data 映射到容器 /app)
docker run -v /data:/app nginx

2. 查看容器

# 查看正在运行的容器
docker ps# 查看所有容器(包括已停止的)
docker ps -a# 查看容器详细信息(如 IP、端口、挂载点)
docker inspect my-container

3. 启动/停止/重启容器

# 启动已停止的容器
docker start my-container# 停止运行中的容器
docker stop my-container# 重启容器
docker restart my-container

4. 删除容器

# 删除已停止的容器
docker rm my-container# 强制删除运行中的容器
docker rm -f my-container# 删除所有已停止的容器
docker container prune

5. 进入容器

# 在运行中的容器内执行命令(如 ls /app)
docker exec my-container ls /app# 交互式进入容器(启动 Bash 终端)
docker exec -it my-container bash# 以指定用户身份进入容器
docker exec -u user123 -it my-container bash# 在后台执行命令(如创建文件)
docker exec -d my-container touch /tmp/hello.txt

6. 查看容器日志

# 查看容器日志(默认最近 20 行)
docker logs my-container# 实时跟踪日志输出
docker logs -f my-container# 查看过去 10 分钟的日志
docker logs --since 10m my-container

四、网络管理

1. 查看网络

# 列出所有网络
docker network ls# 查看网络详细信息
docker network inspect bridge

2. 创建网络

# 创建桥接网络(单主机容器互联)
docker network create my-bridge-net# 创建覆盖网络(跨主机 Swarm 集群)
docker network create -d overlay my-overlay-net

3. 容器连接网络

# 启动容器时加入指定网络
docker run -d --name web --network my-bridge-net nginx# 将现有容器加入网络
docker network connect my-bridge-net web

4. 断开网络

# 将容器从网络中移除
docker network disconnect my-bridge-net web

五、数据卷管理

1. 创建数据卷

# 创建命名数据卷
docker volume create my-volume# 查看数据卷信息
docker volume inspect my-volume

2. 挂载数据卷

# 运行容器时挂载数据卷
docker run -d --name my-app -v my-volume:/data my-image# 挂载宿主机目录
docker run -d --name my-app -v /host/data:/data my-image

3. 删除数据卷

# 删除指定数据卷
docker volume rm my-volume# 删除所有未使用的数据卷
docker volume prune

六、其他实用命令

1. 清理资源

# 清理所有未使用的镜像、容器、网络、数据卷
docker system prune -a --volumes# 清理构建缓存
docker builder prune

2. 导出/导入容器

# 导出容器为 tar 文件
docker export my-container > my-container.tar# 从 tar 文件导入容器
docker import my-container.tar my-image

3. 提交容器为镜像

# 将容器提交为新镜像
docker commit my-container my-new-image

4. 推送镜像到仓库

# 推送镜像到 Docker Hub
docker push my-username/my-image:tag

七、高级操作

1. 容器生命周期管理

# 暂停容器进程
docker pause my-container# 恢复暂停的容器
docker unpause my-container# 强制终止容器(发送 SIGKILL 信号)
docker kill my-container

2. 容器资源限制

# 限制容器内存和 CPU(需 Docker Desktop 支持)
docker run -m 512m --cpus="1.5" my-image# 设置容器最大内存和交换分区
docker run -m 2g --memory-swap 4g my-image

3. 容器编排(Docker Compose 示例)

version: '3'
services:web:image: nginxports:- "8080:80"db:image: mysqlenvironment:MYSQL_ROOT_PASSWORD: root

八、最佳实践

  1. 使用 --rm 标志自动清理容器

    docker run --rm my-image
    

    容器停止后自动删除,避免残留。

  2. 避免使用 latest 标签
    指定明确版本号(如 nginx:1.23)以确保稳定性。

  3. 定期清理未使用资源
    使用 docker system prune 或脚本自动化清理。

  4. 使用 Dockerfile 构建可复用镜像
    通过分层构建和缓存优化构建速度。

  5. 安全实践

    • 使用 --read-only 挂载只读文件系统。
    • 避免以 root 用户运行容器。

九、常见问题排查

1. 容器启动失败

# 查看容器日志定位问题
docker logs my-container

2. 网络连接问题

# 检查容器 IP 和端口映射
docker inspect my-container

3. 磁盘空间不足

# 查看磁盘占用
docker system df# 清理未使用的资源
docker system prune -a --volumes

十、总结

Docker 的核心命令围绕 镜像、容器、网络、数据卷 展开,掌握以下流程可高效完成开发到部署的自动化:

  1. 镜像管理pullbuildpush
  2. 容器操作runexeclogsstop/rm
  3. 网络配置createconnect
  4. 数据持久化volume create-v 挂载

通过组合使用这些命令,开发者可以快速搭建、调试和部署应用。同时,定期清理资源、优化镜像分层、合理使用网络和数据卷,是提升效率的关键。

相关文章:

  • 【大模型】 使用llama.cpp 进行模型转换和量化
  • 魔兽世界正式服插件与宏-敏锐盗贼实用宏探索(3)-起手奥义【袭】之突如其来
  • 使用 origin -> master 强制覆盖本地 master
  • Python Day47 学习(日志Day16-17复习)
  • Win11无法安装Unity5.5.0f3怎么解决?虚拟机中如何配置?Win7怎么安装最新版VMware Tools?来这里教你完美解决!
  • 函数02 day11
  • 模型参数、模型存储精度、参数与显存
  • python46
  • Code Composer Studio快捷键
  • 101.为AI知识问答寻找朗读合适API
  • 5G+边缘计算推动下的商品详情API低延迟高效率新方案
  • 第十一章 通用定时器(上篇)
  • 工业安全零事故的智能守护者:一体化AI智能安防平台
  • DSP——时钟树讲解
  • qt3d自定义生成mesh图形
  • AISHELL-5 全球首套智能驾舱中文语音交互数据集开源
  • 看板会议如何高效进行
  • 编程的本质难点:超越技术层面的五大核心障碍-优雅草卓伊凡
  • 一个n8n构建的能和LLM对话的Agent
  • Cesium1.95中高性能加载1500个点
  • 个人备案能公司网站/关键词是网站seo的核心工作
  • dedecms 网站地图模板/如何制作自己的网页链接
  • 广州越秀区封控区域/seo软件开发
  • 网站模版编辑器/谷歌商店下载安装
  • 南京做南京美容整形网站/一份完整的营销策划书
  • 地方信息网站源码/武汉软件测试培训机构排名