源动力
源动力
发布于 2025-10-04 / 29 阅读
0
0

Docker 和 Kubernetes (K8s) 常用命令大全

本文整理了 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 命令大全涵盖了容器化技术的大多数使用场景,建议收藏并定期查阅。掌握这些命令将极大提高您在容器化环境下的工作效率。


评论

页脚信息显示系统