在日常开发和部署中,经常会遇到需要快速启动一个服务的情况。比如你想测试一个打印服务程序,又不想在本机装一堆依赖,这时候 ref="/tag/2019/" style="color:#479099;font-weight:bold;">Docker 就派上用场了。而 docker run 命令,正是启动容器最核心的指令。
基本用法
最简单的 docker run 用法就是指定一个镜像名称,容器会基于这个镜像运行一次实例。
docker run hello-world
这条命令会下载 hello-world 镜像(如果本地没有),然后运行一个容器,输出一段欢迎信息后退出。整个过程就像插上打印机电源,打一张测试页就关掉,简单直接。
后台运行与端口映射
实际使用中,我们更希望服务一直在后台跑着。比如你写了一个网络打印管理工具,想让它持续监听请求。这时候可以用 -d 参数让容器后台运行,再通过 -p 把容器端口映射到主机。
docker run -d -p 8080:80 nginx
这行命令启动了一个 Nginx 容器,把它的 80 端口映射到本机的 8080。现在访问 http://localhost:8080 就能看到默认页面,就像配置好网络打印机后,在办公室任何电脑都能连上打印。
挂载本地目录
有时候容器需要读取或保存文件。比如你的打印服务要处理用户上传的 PDF 文件,这些文件得存在主机上才安全。这时用 -v 挂载目录就能实现共享。
docker run -v /Users/me/printjobs:/print ubuntu cp report.pdf /print/
这条命令把主机的 /Users/me/printjobs 目录挂载到容器的 /print,然后在容器里复制一个文件过去。下次你在主机这个目录里就能看到它,相当于把打印任务丢进共享文件夹,打印机自动 pickup。
设置环境变量
有些服务的行为依赖配置参数。比如打印服务要区分测试环境和生产环境,可以通过环境变量控制。
docker run -e ENV=production my-print-service
这样容器内的程序就能读取到 ENV 变量值为 production,从而加载对应的配置,就像打印机切换“节能模式”或“高质量模式”一样灵活。
临时调试与交互模式
如果你不确定某个镜像是否正常工作,可以加 --rm 参数让它运行完自动删除,避免垃圾残留。
docker run --rm -it ubuntu bash
这里 -it 让你进入交互式终端,--rm 表示退出后自动清理容器。适合临时调试,比如验证某个命令是否存在、路径对不对,就像借同事的打印机试打一页,用完就走,不留痕迹。
资源限制
在共享服务器上跑容器时,不能让某个服务吃光资源。比如你部署的打印转换服务可能会占用大量内存,可以手动限制。
docker run -m 512m --cpus=1 my-converter
这表示最多使用 512MB 内存和 1 个 CPU 核心,防止它影响其他服务,就像办公室规定每人每天只能免费打 20 页,避免滥用。