Docker 容器使用指南:详细指令集,快速了解容器创建步骤 📅 发布时间:2026/7/8 0:13:40 👁️ 浏览次数: 本文档介绍 Docker 容器的完整使用方法和常用命令。目录容器基础概念容器生命周期管理运行容器容器操作命令容器与宿主机交互容器网络容器数据持久化容器资源限制多容器编排最佳实践完整示例ROS2 Humble Desktop 容器1. 容器基础概念容器是镜像的运行实例。可以类比镜像 类Class容器 实例Instance一个镜像可以创建多个容器每个容器相互隔离、互不影响。2. 容器生命周期管理创建并启动容器# 前台运行会占用终端dockerrun镜像名# 后台运行-d 参数dockerrun-d镜像名# 指定容器名称dockerrun-d--namemycontainer镜像名查看容器状态# 查看运行中的容器dockerps# 查看所有容器包括已停止dockerps-a# 只显示容器 IDdockerps-q# 查看容器详细信息dockerinspect容器名或ID启动 / 停止 / 重启容器dockerstart容器名或ID# 启动已停止的容器dockerstop容器名或ID# 优雅停止dockerkill容器名或ID# 强制终止dockerrestart容器名或ID# 重启dockerpause容器名或ID# 暂停冻结进程dockerunpause容器名或ID# 恢复删除容器dockerrm容器名或ID# 删除已停止的容器dockerrm-f容器名或ID# 强制删除包括运行中的dockercontainer prune# 删除所有已停止的容器3. 运行容器基本运行参数参数说明-d后台运行detached-it交互式 分配伪终端常用 together-p/--publish端口映射宿主机:容器-P随机映射容器内所有 EXPOSE 端口-e设置环境变量--name指定容器名称--rm退出后自动删除容器示例# 运行 Nginx映射 80 端口后台运行dockerrun-d-p8080:80--nameweb nginx# 交互式运行进入容器 bashdockerrun-itubuntu /bin/bash# 执行单次命令后退出dockerrun--rmubuntuechoHello Docker# 带环境变量运行dockerrun-d-eMYSQL_ROOT_PASSWORDmypass mysql指定启动命令# 覆盖镜像默认的 CMDdockerrun ubuntucat/etc/os-release# 使用 entrypointdockerrun--entrypoint/bin/sh nginx4. 容器操作命令进入运行中的容器# 使用 exec推荐dockerexec-it容器名或ID/bin/bashdockerexec-it容器名或ID/bin/sh# 使用 attach会看到主进程输出CtrlPQ 退出而不停止容器dockerattach容器名或ID查看日志dockerlogs容器名或ID# 查看全部日志dockerlogs-f容器名或ID# 实时跟踪类似 tail -fdockerlogs--tail100容器名或ID# 只看最后 100 行dockerlogs-t容器名或ID# 显示时间戳查看进程和资源dockertop容器名或ID# 查看容器内进程dockerstats容器名或ID# 实时 CPU/内存 等资源使用复制文件# 从容器复制到宿主机dockercp容器名或ID:/path/in/container /local/path# 从宿主机复制到容器dockercp/local/path容器名或ID:/path/in/container5. 容器与宿主机交互端口映射# 单端口dockerrun-p8080:80 nginx# 指定宿主机 IPdockerrun-p127.0.0.1:8080:80 nginx# 多端口dockerrun-p8080:80-p443:443 nginx挂载卷Volume / Bind Mount# 命名卷由 Docker 管理dockerrun-vmydata:/app/data nginx# 绑定挂载指定宿主机路径dockerrun-v/host/path:/container/path nginx# 只读挂载dockerrun-v/host/path:/container/path:ro nginx6. 容器网络网络模式模式说明bridge默认容器通过虚拟网桥通信host使用宿主机网络栈none无网络container:name与指定容器共享网络常用网络命令dockernetworkls# 列出网络dockernetwork inspect bridge# 查看网络详情dockerrun--networkhostnginx# 使用 host 网络dockernetwork connect mynet容器# 将容器加入网络dockernetwork disconnect mynet容器创建自定义网络dockernetwork create-dbridge mynetdockerrun-d--nameweb1--networkmynet nginxdockerrun-d--nameweb2--networkmynet nginx# web1 和 web2 可通过容器名相互访问7. 容器数据持久化—创建新容器时指定唯一有效方式Volume推荐# 创建卷dockervolume create myvol# 使用卷dockerrun-vmyvol:/data nginx# 查看卷dockervolumelsdockervolume inspect myvolBind Mount绑定挂载# 宿主机路径:容器路径dockerrun-vC:\Users\Cheng\data:/app/data nginxtmpfs 挂载内存dockerrun--tmpfs/app/cache:rw,size100m nginx8. 容器资源限制# 限制内存dockerrun-m512m nginx# 限制 CPU相对权重dockerrun--cpus0.5nginx# 限制 CPU 核数dockerrun --cpuset-cpus0-1nginx# 组合dockerrun-m1g--cpus1.0--namelimited nginx9. 多容器编排Docker Compose推荐# docker-compose.yml 示例version:3services:web:image:nginxports:-8080:80volumes:-./html:/usr/share/nginx/htmldb:image:mysqlenvironment:MYSQL_ROOT_PASSWORD:secretdockercompose up-d# 启动dockercompose down# 停止并删除dockercomposeps# 查看状态10. 最佳实践一个容器一个进程便于扩展和管理使用非 root 用户提高安全性利用--rm临时测试时自动清理优先使用exec进入容器不干扰主进程数据持久化用 Volume避免数据随容器删除丢失合理设置资源限制防止单容器占满宿主机使用.dockerignore减小镜像体积11. 完整示例ROS2 Humble Desktop 容器本示例用于搭建带图形界面的 ROS2 开发环境让容器能访问宿主机上的显示、硬件和资源。仅适用于 Linux 宿主机依赖 X11、/dev 等。脚本代码#!/bin/bashxhost local:root2/dev/nulldockerrun-it--rm\--nameros2-humble\--hostname$(hostname)\--userroot\--workdir/home/ros/workspace\--privileged\--networkhost\--ipchost\--pidhost\--utshost\-eDISPLAY$DISPLAY\-eQT_X11_NO_MITSHM1\-eQT_QPA_PLATFORMxcb\-eLIBGL_ALWAYS_SOFTWARE0\-eNVIDIA_VISIBLE_DEVICESall\-eNVIDIA_DRIVER_CAPABILITIESall\-eROS_DOMAIN_ID0\-eRMW_IMPLEMENTATIONrmw_fastrtps_cpp\-eTZ$(cat/etc/timezone)\-eLANGC.UTF-8\-eLC_ALLC.UTF-8\-v/tmp/.X11-unix:/tmp/.X11-unix:rw\-v$HOME/.Xauthority:/root/.Xauthority:rw\-v$HOME/workspace:/home/ros/workspace:rw\-v$HOME/.bashrc:/root/.bashrc:ro\-v$HOME/.bash_history:/root/.bash_history:rw\-v/dev:/dev:rw\-v/sys:/sys:ro\-v/proc:/proc:ro\-v/run:/run:rw\-v/tmp:/tmp:rw\-v/etc/localtime:/etc/localtime:ro\-v/etc/timezone:/etc/timezone:ro\-v/etc/machine-id:/etc/machine-id:ro\-v/var/run/dbus:/var/run/dbus:rw\-v$HOME/.gitconfig:/root/.gitconfig:ro\-v$HOME/.ssh:/root/.ssh:ro\-v$HOME/.vscode-server:/root/.vscode-server:rw\--device/dev/dri:/dev/dri:rw\--device/dev/snd:/dev/snd:rw\--device/dev/input:/dev/input:rw\--device/dev/bus/usb:/dev/bus/usb:rw\--device/dev/ttyUSB0:/dev/ttyUSB0:rw\--device/dev/ttyACM0:/dev/ttyACM0:rw\--group-add audio\--group-add video\--group-add dialout\--group-add plugdev\--group-add netdev\--ulimitcore-1\--ulimitnofile1024:524288\--ulimitmemlock-1\--ulimitstack-1\--ulimitnproc65535\--cap-addSYS_PTRACE\--cap-addSYS_ADMIN\--cap-addNET_ADMIN\--cap-addNET_RAW\--cap-addSYS_NICE\--cap-addSYS_RESOURCE\--security-optseccompunconfined\--health-cmdros2 topic list || exit 1\--health-interval30s\--health-timeout10s\--health-retries3\osrf/ros:humble-desktop-full\bash-csource /opt/ros/humble/setup.bash exec bashxhost-local:root2/dev/null参数说明分类参数作用基础--hostname $(hostname)与宿主机同名便于网络与主机名识别--user root以 root 运行便于访问硬件和系统资源--workdir /home/ros/workspace工作目录资源隔离--privileged关闭大部分安全隔离可访问所有设备--network host使用宿主机网络ROS2 多机通信更方便--ipc host共享 IPC 命名空间支持共享内存--pid host共享 PID 命名空间可看到宿主机进程--uts host共享主机名与域名图形显示-e DISPLAY$DISPLAYX11 显示地址-e QT_X11_NO_MITSHM1避免 Qt 与 X11 共享内存冲突-e QT_QPA_PLATFORMxcbQt 使用 XCB 平台插件-v /tmp/.X11-unix挂载 X11 socket用于显示输出-v $HOME/.XauthorityX11 认证NVIDIANVIDIA_VISIBLE_DEVICESall暴露全部 GPUNVIDIA_DRIVER_CAPABILITIESall使用图形与计算等全部能力ROS2ROS_DOMAIN_ID0默认 DDS 域 IDRMW_IMPLEMENTATIONrmw_fastrtps_cpp使用 Fast DDS 作为 RMW时区/语言TZ,LANG,LC_ALL与宿主机保持一致工作目录$HOME/workspace宿主机工程目录挂载到容器便于开发.bashrc,.bash_history沿用宿主机的 Shell 配置和命令历史硬件设备/dev,/sys,/proc访问设备与系统信息--device/dev/driGPU 显示输出--device/dev/snd声卡--device/dev/input键盘、鼠标等输入设备--device/dev/bus/usbUSB 设备--device/dev/ttyUSB0,/dev/ttyACM0串口、Arduino 等系统配置/etc/localtime,/etc/timezone时区同步/etc/machine-id,/var/run/dbusD-Bus 等系统服务用户配置.gitconfig,.sshGit 配置与 SSH 密钥.vscode-serverVS Code Remote 在容器内使用权限组audio,video,dialout,plugdev,netdev访问音频、视频、串口、USB、网络等ulimitcore-1,nofile1024:524288等放宽资源限制适应调试和 ROS2 需求cap-addSYS_PTRACE,SYS_ADMIN等调试、网络配置、资源管理等能力seccompunconfined关闭 seccomp 过滤健康检查--health-cmd,--health-interval等定期执行ros2 topic list检查 ROS2 是否可用xhostxhost local:root/-local:root允许/收回容器内 root 使用本地 X Server使用前注意运行前需执行xhost local:root使本地 root 可连接 X Server。脚本已包含该命令若手动执行docker run需自行先运行。确保宿主机已安装并运行 X11。若使用 Wayland可能需要配置 XWayland。--privileged与seccompunconfined会减弱隔离仅在可信环境或开发场景使用。若没有串口或 USB 设备/dev/ttyUSB0、/dev/ttyACM0等挂载可能报错可按需注释或移除。常用命令速查操作命令运行docker run -d -p 端口:端口 --name 名称 镜像查看docker ps/docker ps -a进入docker exec -it 容器 /bin/bash日志docker logs -f 容器停止docker stop 容器删除docker rm -f 容器文档基于 Docker 官方文档和常见实践整理适用于 Docker Desktop 及 Linux 环境。
python flask电子资源类学习资料分享网站的设计与实现vue 目录技术选型与架构设计后端实现步骤前端Vue实现步骤关键功能实现部署方案安全增强措施测试计划扩展功能路线图项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与架构设计 后端采用Python Fla… 2026/7/8 0:08:40
计算机毕业设计springboot基于JAVAWEB的网上招聘系统 基于SpringBoot框架的人才招聘服务平台开发与实现 SpringBoot+Vue技术栈的智能化求职招聘系统构建 计算机毕业设计springboot基于JAVAWEB的网上招聘系统(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的普及和人才市场竞争的日益激烈,传统的人力资源管… 2026/5/17 10:22:37
毕业论文「无痛写作」指南!Paperzz:四步通关初稿 / 绘图 / 排版 / AI 率,毕业党直接抄作业 Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 还在跟毕业论文初稿死磕?空白文档半天敲不出一行字,数据图表画到崩溃,格式… 2026/7/3 10:50:30
STM32F215RE与A3910电机驱动方案详解 1. 项目概述:A3910与STM32F215RE的黄金组合在嵌入式系统开发领域,选择合适的驱动芯片和主控MCU往往决定了项目的成败。A3910作为一款高性能电机驱动芯片,搭配基于ARM Cortex-M3内核的STM32F215RE微控制器,能够构建出响应迅速、控制… 2026/7/8 0:10:49
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
线激光扫描三维成像:5种光条中心线提取算法对比与Python实现 线激光扫描三维成像:5种光条中心线提取算法对比与Python实现在工业检测、逆向工程和三维重建领域,线激光扫描技术因其非接触、高精度和快速采集的特点,已成为获取物体三维形貌的主流方案之一。这项技术的核心环节是从采集的激光条纹图像中精确… 2026/7/7 23:58:47
SQL 数据分析性能对比:窗口函数 vs 子查询 vs 临时表,3方案效率实测 SQL 数据分析性能优化实战:窗口函数 vs 子查询 vs 临时表 在数据分析工作中,SQL查询性能往往是决定工作效率的关键因素。面对复杂的业务场景,如何选择最优的查询方案?本文将深入对比窗口函数、子查询和临时表三种技术方案… 2026/7/7 23:58:47
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/7 11:26:58