大家好!作为开发者,您一定或多或少听说过“Docker”这个词。它被称为一种神奇的工具,能让“在我的电脑上运行得很好…”这句话消失不见。😉
然而,当您真正开始尝试时,面对黑色的终端屏幕可能会感到茫然。因此,今天我整理了负责Docker核心生命周期(Lifecycle)的关键命令,让任何人都能轻松上手。有了这篇文章,您就能迈出自由操控Docker容器的第一步!

第一步:管理现有容器(查看、停止、删除)📦
首先,我们来了解如何管理已经运行的容器。就像电脑的任务管理器一样,Docker也有查看和管理运行中进程(容器)的功能。
✅ 查看运行中的容器列表:docker ps
这个命令用于查看当前服务器上正在运行哪些容器。
# 仅显示当前正在运行的容器。
docker ps
如果想查看包括已停止在内的所有容器,请添加 -a 选项。
# 显示所有容器,包括运行中和已停止的。
docker ps -a
通过这个命令,您可以一目了然地掌握容器的ID、名称、使用的镜像、端口等重要信息。
🛑 停止运行中的容器:docker stop
如果不再需要某个容器,可以安全地停止它。使用通过 docker ps 命令确认的容器ID或名称即可。
# docker stop <容器_ID_或_名称>
docker stop a1b2c3d4e5f6
🗑️ 彻底删除容器:docker rm
stop 只是暂时停止容器,并非完全删除。要彻底删除不需要的容器,必须使用 rm 命令。请注意,运行中的容器无法直接删除,因此必须先执行 stop 命令。
# docker rm <容器_ID_或_名称>
docker rm a1b2c3d4e5f6
💡 小贴士: 想一次性停止并删除吗?使用 -f (force) 选项可以直接删除运行中的容器。docker rm -f <容器_ID_或_名称>
第二步:创建自己的蓝图(Docker镜像构建)🛠️
现在已经清理了现有容器,接下来是时候创建包含您自己应用程序的新镜像了。
- 什么是 Dockerfile? 它是按顺序记录运行您的应用程序所需的所有设置(基础操作系统、要安装的程序、源代码复制、执行命令等)的文本文件,即镜像蓝图。
- 什么是镜像(Image)? 它是基于 Dockerfile 这个蓝图构建的,包含了运行应用程序所需的一切的软件包。
将这个蓝图转换为镜像的魔法咒语是 docker build。
Bash
# cd /进入Dockerfile所在路径
# docker build -t <镜像名称:标签> <Dockerfile路径>
docker build -t my-web-app:1.0 .
我们来看看命令的各个部分:
docker build: 意思是“用这个蓝图构建一个镜像!”-t my-web-app:1.0:-t是为镜像添加名称和标签(版本)的选项。(例如,名为my-web-app的1.0版本)这样命名后,以后可以轻松找到并使用该镜像。.: 表示 Dockerfile 所在的路径。.代表“当前目录”。
第三步:终于运行!(将容器发布到世界) 🚀
好了,现在是时候使用构建好的镜像,将其作为实际运行的容器启动了!让我们了解一下最重要且选项众多的 docker run 命令。
# docker run [选项] <镜像名称:标签>
docker run -d --name my-server -p 8080:80 my-web-app:1.0
哇,看起来有点长,但只要掌握几个核心选项就非常方便。
-d (--detach): 在后台运行容器。如果没有这个选项,容器会占用终端,导致您无法进行其他操作。对于服务器应用程序来说,这是必不可少的选项!--name my-server: 为容器指定一个名称,例如my-server。指定名称后,以后管理起来会非常方便,比如使用docker stop my-server。-p 8080:80: 这是连接端口最重要的选项。它表示外部(主机)端口:内部(容器)端口。上面的例子意思是“将进入我电脑 8080 端口的请求转发到容器的 80 端口!”。因此,我们可以通过http://localhost:8080访问容器内部运行的 Web 服务器。my-web-app:1.0: 最后,指定要运行的镜像名称。
总结
今天,我们体验了 Docker 的三个核心流程:
- 管理 (ps, stop, rm): 清理现有容器
- 构建 (build): 创建自己的镜像
- 运行 (run): 将我的应用程序发布到世界
即使只熟悉这三个命令周期,您也能自信地处理大多数 Docker 任务。现在,尝试将您只在自己电脑上运行的项目制作成 Docker 镜像,分享给朋友,或者轻松部署到服务器上吧!
标签: Docker, 容器, 虚拟化, DevOps, 开发, 服务器, 镜像构建, Docker基础
发表回复