本文整理了 Docker 和 Kubernetes 容器化技术的常用命令,涵盖容器管理、镜像操作、集群部署等各个方面,适合开发者和运维人员参考使用。
一、Docker 常用命令
1. 镜像管理
# 查看镜像
docker images
docker image ls
# 拉取镜像
docker pull nginx:latest
docker pull ubuntu:20.04
# 构建镜像
docker build -t myapp:1.0 .
docker build -f Dockerfile.prod -t myapp:prod .
# 删除镜像
docker rmi nginx:latest
docker image rm ubuntu:20.04
docker rmi $(docker images -q) # 删除所有镜像
# 导出导入镜像
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
# 查看镜像历史
docker history nginx:latest
# 标记镜像
docker tag nginx:latest myregistry.com/nginx:1.0
2. 容器管理
# 运行容器
docker run -d --name mynginx nginx:latest
docker run -it --rm ubuntu:20.04 bash
docker run -p 8080:80 nginx:latest
docker run -v /host/path:/container/path nginx:latest
docker run -e ENV_VAR=value nginx:latest
# 查看容器
docker ps # 运行中的容器
docker ps -a # 所有容器
docker ps -q # 只显示容器ID
# 停止/启动容器
docker stop container_name
docker start container_name
docker restart container_name
# 删除容器
docker rm container_name
docker rm -f container_name # 强制删除运行中的容器
docker container prune # 删除所有停止的容器
# 进入容器
docker exec -it container_name bash
docker exec -it container_name sh
# 查看容器日志
docker logs container_name
docker logs -f container_name # 实时日志
docker logs --tail 100 container_name # 最后100行日志
# 查看容器信息
docker inspect container_name
docker stats container_name # 资源使用情况
docker top container_name # 容器内进程
3. 网络管理
# 查看网络
docker network ls
# 创建网络
docker network create mynetwork
docker network create --driver bridge mybridge
# 连接容器到网络
docker network connect mynetwork container_name
docker network disconnect mynetwork container_name
# 查看网络详情
docker network inspect mynetwork
4. 数据卷管理
# 查看数据卷
docker volume ls
# 创建数据卷
docker volume create myvolume
# 删除数据卷
docker volume rm myvolume
docker volume prune # 删除未使用的数据卷
# 使用数据卷
docker run -v myvolume:/app/data nginx:latest
docker run --mount source=myvolume,target=/app/data nginx:latest
5. Docker Compose 常用命令
# 启动服务
docker-compose up -d
docker-compose up -d --build # 重新构建镜像
# 查看服务状态
docker-compose ps
docker-compose logs
# 停止服务
docker-compose down
docker-compose stop
# 扩展服务
docker-compose up -d --scale web=3 --scale redis=2
# 执行命令
docker-compose exec web bash
docker-compose run web python manage.py migrate
二、Kubernetes (K8s) 常用命令
1. 集群管理
# 查看集群信息
kubectl cluster-info
kubectl get nodes
kubectl describe node node-name
# 查看资源信息
kubectl api-resources
kubectl api-versions
2. 命名空间管理
# 查看命名空间
kubectl get namespaces
kubectl get ns
# 创建命名空间
kubectl create namespace my-namespace
# 设置默认命名空间
kubectl config set-context --current --namespace=my-namespace
# 删除命名空间
kubectl delete namespace my-namespace
3. Pod 管理
# 查看Pod
kubectl get pods
kubectl get pods -n namespace-name
kubectl get pods -o wide # 显示更多信息
kubectl get pods --watch # 实时监控
# 查看Pod详情
kubectl describe pod pod-name
kubectl get pod pod-name -o yaml # 查看YAML配置
# 进入Pod
kubectl exec -it pod-name -- bash
kubectl exec -it pod-name -- sh
# 查看Pod日志
kubectl logs pod-name
kubectl logs -f pod-name # 实时日志
kubectl logs --tail=100 pod-name # 最后100行
# 删除Pod
kubectl delete pod pod-name
kubectl delete pod pod-name --force --grace-period=0 # 强制删除
# 调试Pod
kubectl port-forward pod-name 8080:80 # 端口转发
kubectl cp pod-name:/path/to/file ./local-file # 复制文件
4. Deployment 管理
# 创建Deployment
kubectl create deployment my-deploy --image=nginx:latest
kubectl apply -f deployment.yaml
# 查看Deployment
kubectl get deployments
kubectl get deploy
# 扩展Deployment
kubectl scale deployment my-deploy --replicas=3
kubectl autoscale deployment my-deploy --min=2 --max=5 --cpu-percent=80
# 更新Deployment
kubectl set image deployment/my-deploy nginx=nginx:1.19
kubectl rollout restart deployment/my-deploy
# 查看更新状态
kubectl rollout status deployment/my-deploy
kubectl rollout history deployment/my-deploy
# 回滚Deployment
kubectl rollout undo deployment/my-deploy
kubectl rollout undo deployment/my-deploy --to-revision=2
# 删除Deployment
kubectl delete deployment my-deploy
5. Service 管理
# 创建Service
kubectl create service clusterip my-svc --tcp=80:8080
kubectl expose deployment my-deploy --port=80 --target-port=8080
kubectl apply -f service.yaml
# 查看Service
kubectl get services
kubectl get svc
# 查看Service详情
kubectl describe service my-svc
# 删除Service
kubectl delete service my-svc
6. ConfigMap 和 Secret 管理
# ConfigMap操作
kubectl create configmap my-config --from-literal=key=value
kubectl create configmap my-config --from-file=config-file.properties
kubectl get configmaps
kubectl describe configmap my-config
# Secret操作
kubectl create secret generic my-secret --from-literal=password=secret123
kubectl create secret tls my-tls --cert=path/to/cert --key=path/to/key
kubectl get secrets
kubectl describe secret my-secret
7. 资源管理
# 查看资源
kubectl get all
kubectl get pods,svc,deploy # 查看多个资源
# 资源描述
kubectl describe pod/pod-name
kubectl describe svc/service-name
# 编辑资源
kubectl edit deployment/my-deploy
kubectl edit pod/pod-name
# 删除资源
kubectl delete -f manifest.yaml
kubectl delete pod,svc -l app=myapp # 按标签删除
8. 标签和选择器
# 管理标签
kubectl label pods pod-name environment=production
kubectl label pods pod-name tier- # 删除标签
# 按标签查询
kubectl get pods -l app=nginx
kubectl get all --selector environment=production
9. 调试和故障排查
# 查看事件
kubectl get events
kubectl get events --sort-by=.metadata.creationTimestamp
# 资源使用情况
kubectl top nodes
kubectl top pods
# 检查集群状态
kubectl get componentstatuses
kubectl get cs
# 查看资源定义
kubectl explain pods
kubectl explain pods.spec.containers
10. YAML 文件操作
# 生成YAML模板
kubectl create deployment my-deploy --image=nginx:latest --dry-run=client -o yaml
kubectl run pod-name --image=nginx:latest --dry-run=client -o yaml
# 应用YAML文件
kubectl apply -f manifest.yaml
kubectl apply -f directory/ # 应用目录下所有文件
kubectl apply -f https://example.com/manifest.yaml
# 验证YAML文件
kubectl apply -f manifest.yaml --dry-run=client
kubectl apply -f manifest.yaml --validate=false # 跳过验证
11. 高级命令
# 端口转发
kubectl port-forward svc/my-service 8080:80
kubectl port-forward pods/pod-name 8080:80
# 执行命令
kubectl exec pod-name -- ls /app
kubectl exec pod-name -c container-name -- bash # 指定容器
# 拷贝文件
kubectl cp pod-name:/path/to/file ./local-file
kubectl cp ./local-file pod-name:/path/to/file
# 日志查看
kubectl logs -l app=myapp --tail=100
kubectl logs --previous pod-name # 查看之前容器的日志
三、Helm 包管理命令
# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# 查看图表
helm search repo nginx
helm search hub mysql
# 安装图表
helm install my-release bitnami/nginx
helm install my-release ./my-chart # 本地图表
# 查看发布
helm list
helm status my-release
# 升级发布
helm upgrade my-release bitnami/nginx
helm rollback my-release 1 # 回滚到版本1
# 卸载发布
helm uninstall my-release
四、常用技巧和快捷方式
# 快捷别名
alias k='kubectl'
alias kgp='kubectl get pods'
alias kgs='kubectl get services'
# 自动补全
source <(kubectl completion bash) # Bash
source <(kubectl completion zsh) # Zsh
# 输出格式
kubectl get pods -o json
kubectl get pods -o yaml
kubectl get pods -o jsonpath='{.items[*].metadata.name}'
# 批量操作
kubectl delete pods --all
kubectl get pods --no-headers | awk '{print $1}' | xargs kubectl delete pod
五、总结表:最常用命令速查
Docker 常用命令速查
| 命令 | 功能描述 | 常用示例 |
|------|----------|----------|
| docker ps | 查看容器 | docker ps -a |
| docker run | 运行容器 | docker run -d nginx |
| docker exec | 进入容器 | docker exec -it container bash |
| docker logs | 查看日志 | docker logs -f container |
| docker build | 构建镜像 | docker build -t myapp . |
| docker-compose up | 启动服务 | docker-compose up -d |
Kubernetes 常用命令速查
| 命令 | 功能描述 | 常用示例 |
|------|----------|----------|
| kubectl get pods | 查看Pod | kubectl get pods -o wide |
| kubectl describe | 查看详情 | kubectl describe pod name |
| kubectl apply | 应用配置 | kubectl apply -f manifest.yaml |
| kubectl logs | 查看日志 | kubectl logs -f pod-name |
| kubectl exec | 执行命令 | kubectl exec -it pod-name bash |
| kubectl delete | 删除资源 | kubectl delete pod pod-name |
这份 Docker 和 Kubernetes 命令大全涵盖了容器化技术的大多数使用场景,建议收藏并定期查阅。掌握这些命令将极大提高您在容器化环境下的工作效率。