ref="/tag/2019/" style="color:#874873;font-weight:bold;">Docker run命令详解:从零开始跑一个容器
在日常开发和运维中,经常会遇到“在我机器上能跑”的尴尬情况。这时候,Docker 就成了救星。而其中最常用的命令之一就是 docker run —— 它能让你快速启动一个隔离的容器环境,就像插上电源就能用的即热饮水机。
比如你在公司写了个小工具,想让同事也试试,又怕他环境配置麻烦?直接给他一条 docker run 命令,一行搞定,省得来回折腾 Python 版本、依赖库、端口冲突。
基本语法长什么样?
最简单的形式是:
docker run 镜像名称比如你本地有个叫 nginx 的镜像,直接运行:
docker run nginx这条命令会创建一个容器,并启动 Nginx 服务。但默认情况下它是在前台运行的,关掉终端就停了。实际使用中我们更常用后台模式。
常用选项实战说明
光跑起来还不够,还得控制得住。下面这几个参数几乎每天都会用到。
-d:后台运行
加个 -d 就能让容器在后台默默工作,不占终端。
docker run -d nginx这就像把程序扔进“后台服务”模式,你可以继续干别的事,不用守着它输出日志。
-p:端口映射
Web 服务总得访问吧?用 -p 把容器端口映射到宿主机。
docker run -d -p 8080:80 nginx意思是把本机的 8080 端口转发到容器的 80 端口。现在打开浏览器访问 http://localhost:8080,就能看到 Nginx 欢迎页了。
--name:起个好记的名字
默认容器名字是一串随机字符,难记又难认。用 --name 给它取个名字,方便管理。
docker run -d -p 8080:80 --name my-web-server nginx以后查日志、停容器,直接用这个名字:
docker logs my-web-server
docker stop my-web-server-e:设置环境变量
很多应用靠环境变量来配置行为。比如启动一个 MySQL 容器,必须设密码:
docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql这样容器里的 MySQL 就会用这个密码初始化 root 用户。别忘了生产环境可别用这么简单的密码。
-v:挂载数据卷
容器一删,数据就没了?用 -v 把数据存在外面。
docker run -d -v /mydata:/var/lib/mysql mysql这样即使容器删了重建,/mydata 里的数据还在,数据库不会丢。
--rm:临时任务专用
有些命令只跑一次,比如测试工具、迁移脚本。加上 --rm,容器执行完自动清理。
docker run --rm ubuntu ls /这条命令列出根目录后容器就消失,不留垃圾。
组合起来实战一把
假设你要快速搭个 WordPress 博客,可以用官方镜像配合 MySQL:
docker run -d \
--name wordpress-blog \
-p 8000:80 \
-e WORDPRESS_DB_HOST=mysql-server \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=123456 \
-v ./wp-content:/var/www/html/wp-content \
wordpress这一条命令设置了名字、端口、数据库连接信息,还把主题和插件目录挂出来,方便后续修改。刷新浏览器就能开始写文章了。
熟悉这些参数后,你会发现 docker run 其实没那么复杂。就跟搭积木一样,一块一块拼出你需要的服务。下次部署新项目时,不妨先写条 docker run 试试水,效率高还不容易出错。