4、Docker常用命令:镜像拉取、容器运行、查看状态、停止删除等基础操作
好,咱们正式开始动手了。前面聊了那么多概念,说白了都是铺垫。这一节,我带你亲手敲几个命令,把Docker用起来。
你想想看,学Docker最怕什么?就是命令记不住,敲完不知道发生了什么。别担心,我刚开始也这样。咱们就挑最常用的几个,练熟了再说。
4.1 镜像拉取:从仓库里拿东西
Docker镜像,你可以理解成一个“压缩好的操作系统+软件包”。我们要用某个环境,第一步就是把它拉下来。
命令很简单:
docker pull 镜像名:标签
比如,我想拉一个Ubuntu 22.04的镜像:
docker pull ubuntu:22.04
这里有个小细节。标签(tag)不写的话,默认拉取 latest。我个人习惯,生产环境一定指定版本号。为什么?
我记得有一次,项目里用了 latest,结果第二天同事拉下来的是新版本,依赖全炸了。嗯,从那以后,我再也不敢偷懒了。
docker search 镜像名,不过现在更推荐去 Docker Hub 网页上看,信息更全。
4.2 容器运行:让镜像活起来
镜像拉下来了,怎么用?运行它!
最基础的运行命令:
docker run 镜像名
但这样跑完,容器就退出了。为什么?因为容器里的主进程结束了。我们通常需要加几个参数:
docker run -it --name my_ubuntu ubuntu:22.04 /bin/bash
拆开解释一下:
-i:交互模式,保持输入流打开-t:分配一个伪终端,让你能敲命令--name:给容器起个名字,方便管理/bin/bash:容器启动后执行的命令
你敲完上面那条命令,就会直接进入Ubuntu容器的终端。是不是很神奇?
docker run 每次都会创建一个新容器。如果只是想启动已有的容器,用 docker start。
4.3 查看状态:看看家里都有啥
容器跑起来了,怎么看?
查看正在运行的容器:
docker ps
查看所有容器(包括已停止的):
docker ps -a
输出大概长这样:
| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| a1b2c3d4e5f6 | ubuntu:22.04 | "/bin/bash" | 2 minutes ago | Up 2 minutes | my_ubuntu |
你看,容器ID、镜像、创建时间、状态、名字,一目了然。我个人习惯用 docker ps -a 先扫一眼,看看哪些容器是“僵尸”状态,该清理了。
4.4 停止与删除:该收手时就收手
容器用完了,怎么关?
停止一个容器:
docker stop 容器名或ID
比如:
docker stop my_ubuntu
容器停止后,它还在磁盘上。想彻底删除:
docker rm 容器名或ID
注意,删除前必须先停止容器,否则会报错。当然,你也可以强制删除:
docker rm -f 容器名或ID
镜像也是一样,不用了可以删:
docker rmi 镜像名:标签
比如:
docker rmi ubuntu:22.04
4.5 常用组合拳:一条命令搞定
实际工作中,我们经常需要“先删旧的,再跑新的”。我习惯这样写:
docker stop my_container && docker rm my_container && docker run -d --name my_container nginx:latest
这里用了 &&,前一条成功才执行下一条。还有个 -d 参数,表示后台运行(detached模式)。
你想想看,如果每次都要手动停、删、跑,多麻烦。这一条命令,省了多少事。
4.6 避坑指南:我踩过的几个坑
- 镜像拉不下来? 多半是网络问题。国内用户建议配置镜像加速器,比如阿里云、中科大的。我一般用
/etc/docker/daemon.json配置。 - 容器一跑就退出? 检查一下主进程是不是前台进程。比如Nginx,不加
daemon off就会秒退。 - 删不掉容器? 看看是不是有依赖,或者容器还在运行。用
docker ps -a确认状态。
好了,这一节的内容就这些。命令不多,但都是吃饭的家伙。你找个空闲时间,打开终端,把每个命令敲一遍。相信我,敲完一遍,你就记住了。