11/24/2025Docker381 Views

Docker & K8S 命令合集

Docker & Docker compose 命令合集

1. Docker: 镜像管理 (Image Management)

命令描述
docker build -t <image_name>:<tag> .使用当前目录的 Dockerfile 构建镜像并打上标签。
docker imagesdocker image ls列出本地所有镜像。
docker pull <image_name>:<tag>从仓库拉取指定镜像。
docker push <username>/<image_name>:<tag>将本地镜像推送到仓库。
docker rmi <image_id_or_name>删除一个或多个本地镜像。
docker rmi $(docker images -f "dangling=true" -q)删除所有悬空的(dangling)镜像。
docker tag <source_image>:<tag> <target_image>:<tag>为镜像打上新的标签。
docker history <image_name>查看镜像的构建历史层次。
docker search <term>在 Docker Hub 搜索镜像。
docker save -o <file_name>.tar <image_name>将镜像保存为一个 tar 归档文件。
docker load -i <file_name>.tar从一个 tar 归档文件加载镜像。

2. Docker: 容器生命周期 (Container Lifecycle)

命令描述
docker run [OPTIONS] <image_name> [COMMAND]创建并启动一个新容器。常用 OPTIONS 如下:
-d后台(detached)模式运行。
-p <host_port>:<container_port>端口映射。
-v <host_path>:<container_path>数据卷挂载。
--name <container_name>指定容器名称。
-e <KEY>=<VALUE>设置环境变量。
--network <network_name>连接到指定网络。
--rm容器停止后自动删除。
docker psdocker container ls列出正在运行的容器。
docker ps -a列出所有容器(包括已停止的)。
docker start/stop/restart <container_id_or_name>启动/停止/重启容器。
docker rm <container_id_or_name>删除一个或多个已停止的容器。
docker rm -f <container_id_or_name>强制删除一个容器(即使正在运行)。
docker kill <container_id_or_name>发送 SIGKILL 信号立即停止一个容器。
docker pause/unpause <container_id_or_name>暂停/恢复容器中的所有进程。

3. Docker: 容器调试与交互 (Container Inspection & Interaction)

命令描述
docker logs <container_id_or_name>查看容器的日志。
docker logs -f --tail <lines> <container>实时跟踪日志输出(可指定末尾行数)。
docker exec -it <container_name> <command>在运行的容器内执行命令(例如 bash 进入交互式终端)。
docker inspect <container_or_image_name>显示容器或镜像的底层详细信息(JSON 格式)。
docker top <container_name>显示容器内正在运行的进程。
docker stats实时显示所有运行中容器的资源使用情况。
docker cp <src_path> <container>:<dest_path>在主机和容器之间复制文件。

4. Docker: 网络与数据卷 (Networking & Volumes)

命令描述
docker network ls/create/rm/inspect管理 Docker 网络。
docker volume ls/create/rm/inspect管理 Docker 数据卷。
docker system prune清理所有未使用的容器、网络、悬空镜像。
docker system prune -a --volumes(危险) 清理所有未使用的容器、网络、镜像和数据卷。

5. Docker Compose: 多容器应用管理

Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。

命令描述
docker-compose up构建、创建并启动 docker-compose.yml 中定义的所有服务。
docker-compose up -d在后台模式启动服务。
docker-compose down停止并删除容器、网络、数据卷。
docker-compose down -v停止、删除容器、网络,并删除定义的数据卷。
docker-compose ps列出 Compose 项目中的所有容器。
docker-compose logs查看所有服务的日志。
docker-compose logs -f <service_name>实时跟踪指定服务的日志。
docker-compose build构建或重新构建服务。
docker-compose pull拉取服务依赖的镜像。
docker-compose config验证并查看 Compose 文件的配置。
docker-compose exec <service_name> <command>在指定服务容器内执行命令。

Kubernetes (kubectl) 命令合集

1. 基本操作与资源查看 (Basic Operations & Resource Viewing)

命令描述
kubectl get <resource>列出资源。常用资源: pods, svc, deploy, ns, nodes, cm (ConfigMap)。
kubectl get all --all-namespaces列出所有命名空间下的所有核心资源。
kubectl describe <resource> <resource_name>显示资源的详细状态,是排错首选命令
kubectl logs <pod_name>查看 Pod 的日志。
kubectl logs -f <pod_name> -c <container_name>实时跟踪 Pod 中指定容器的日志。
输出格式化(非常重要)
kubectl get pods -o wide以宽格式显示,包含 IP、所在节点等更多信息。
kubectl get <resource> <name> -o yaml以 YAML 格式输出资源的完整定义。
kubectl get <resource> <name> -o json以 JSON 格式输出资源的完整定义。
kubectl get ingress -o custom-columns=NAME:.metadata.name,HOSTS:.spec.rules[*].host自定义输出列。

2. 声明式管理 (Declarative Management)

命令描述
kubectl apply -f <filename.yaml>通过 YAML 文件创建或更新资源。推荐使用
kubectl delete -f <filename.yaml>删除 YAML 文件中定义的资源。
kubectl diff -f <filename.yaml>显示 apply 将要进行的更改。

3. 命令式管理 (Imperative Management)

命令描述
kubectl create <resource> <name> [options]命令式地创建资源,例如 kubectl create namespace <ns_name>
kubectl run <pod_name> --image=<image>创建一个 Pod(在较新版本中,它会创建一个 Deployment)。
kubectl expose deploy <name> --port=80 --target-port=8080为 Deployment 创建一个 Service。
kubectl scale deploy <name> --replicas=<count>伸缩 Deployment 的副本数。
kubectl edit <resource> <name>在默认编辑器中直接编辑资源配置。
kubectl delete <resource> <name>命令式地删除资源。
kubectl label <resource> <name> <key>=<value>添加或更新资源的标签。
kubectl annotate <resource> <name> <key>=<value>添加或更新资源的注解。
kubectl set image deploy/<name> <container>=<new_image>滚动更新 Deployment 中容器的镜像。

4. 调试与故障排查 (Debugging & Troubleshooting)

命令描述
kubectl exec -it <pod_name> -- /bin/sh进入 Pod 容器的交互式终端。
kubectl port-forward <pod_or_svc_name> <local_port>:<remote_port>将本地端口转发到 Pod 或 Service 的端口。
kubectl top pods查看 Pod 的 CPU 和内存使用情况(需 metrics-server)。
kubectl top nodes查看节点的 CPU 和内存使用情况(需 metrics-server)。
kubectl get events --sort-by='.metadata.creationTimestamp'查看集群事件,按时间排序。
kubectl rollout status deploy/<name>查看 Deployment 的部署状态。
kubectl rollout history deploy/<name>查看 Deployment 的历史版本。
kubectl rollout undo deploy/<name>回滚到上一个版本。
kubectl debug pod/<pod_name> -it --image=<debug_image>(核心调试命令) 为 Pod 附加一个临时的 "ephemeral" 调试容器。
kubectl debug node/<node_name> -it --image=<debug_image>在节点上创建一个具有主机命名空间的调试 Pod。

5. 集群与节点管理 (Cluster & Node Management)

命令描述
kubectl config get-contexts列出所有配置的上下文(集群连接信息)。
kubectl config use-context <context_name>切换到指定的上下文。
kubectl config set-context --current --namespace=<ns>设置当前上下文的默认命名空间。
kubectl cluster-info显示集群端点信息。
kubectl cordon <node_name>将节点标记为不可调度(不接受新 Pod)。
kubectl uncordon <node_name>取消节点的不可调度标记。
kubectl drain <node_name> --ignore-daemonsets安全地驱逐节点上的所有 Pod 以进行维护。
kubectl taint nodes <node_name> <key>=<value>:<effect>为节点添加污点(Taint)。Effect 可为 NoSchedule, PreferNoSchedule, NoExecute

6. 高级主题 (Advanced Topics)

命令描述
kubectl api-resources列出所有可用的 API 资源类型。
kubectl api-versions列出所有可用的 API 版本。
RBAC (基于角色的访问控制)
kubectl get roles,rolebindings查看当前命名空间下的角色和角色绑定。
kubectl get clusterroles,clusterrolebindings查看集群范围的角色和角色绑定。
kubectl auth can-i <verb> <resource> --as <user>检查指定用户是否具有执行某操作的权限。
存储 (Storage)
kubectl get pv,pvc查看持久卷 (PV) 和持久卷声明 (PVC)。

讨论 0

0 / 100
Supports **Bold**, `Code`
No comments yet.