在现代开发和运维工作中,容器技术已经成了家常便饭。像 Docker 和 Kubernetes 这类平台,虽然有图形界面,但真正高效的操作还得靠命令行。熟练使用命令行,不仅能快速排查问题,还能批量管理服务,省时又省力。
认识基本的容器命令
以 Docker 为例,启动一个 Nginx 容器只需要一条命令:
docker run -d -p 8080:80 --name my-nginx nginx
这条命令的意思是:后台运行(-d)一个名为 my-nginx 的容器,把主机的 8080 端口映射到容器的 80 端口,镜像用的是官方 nginx。执行完,打开浏览器访问 localhost:8080 就能看到欢迎页了。
查看和管理正在运行的容器
想看看当前有哪些容器在跑,可以用:
docker ps
如果连已停止的也想看,加个 -a 参数:
docker ps -a
看到某个容器卡住了,可以手动停掉或删掉:
docker stop my-nginx
docker rm my-nginx
进入容器内部调试
有时候服务出问题,得进容器里看看配置文件对不对。比如要进入一个正在运行的 Ubuntu 容器:
docker exec -it my-ubuntu /bin/bash
-it 表示交互式终端,/bin/bash 是启动 shell。进去之后就跟操作普通 Linux 机器一样了,查日志、改配置、装工具都行。
Kubernetes 中的常用操作
当服务规模变大,单用 Docker 不够用了,就得上 Kubernetes(简称 k8s)。虽然它复杂一些,但核心命令也不难记。
查看集群里的所有 Pod:
kubectl get pods
想看某个服务的日志,比如叫 web-app 的 Pod:
kubectl logs web-app
要是应用挂了,可以尝试重启:
kubectl delete pod web-app
# k8s 会自动拉起新实例
写个简单的部署文件试试
k8s 很多时候靠 YAML 文件定义服务。比如创建一个 deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
然后用命令提交到集群:
kubectl apply -f deployment.yaml
这样就会在集群里启动两个 Nginx 实例,后续还可以用 kubectl scale 调整副本数。
小技巧:命令补全和别名
敲多了命令难免手酸。可以给常用命令设个别名,比如在 ~/.bashrc 里加一行:
alias kd="kubectl"
再启用 kubectl 自动补全:
source <(kubectl completion bash)
保存后重新加载配置,敲命令时按 Tab 就能自动补全资源类型和名称,效率提升明显。
命令行不是花架子,它是每天和系统打交道的工具。刚开始可能觉得记命令麻烦,但用熟了之后,点鼠标反而会觉得慢。