Docker & Docker compose 命令合集
1. Docker: 镜像管理 (Image Management)
| 命令 | 描述 |
|---|
docker build -t <image_name>:<tag> . | 使用当前目录的 Dockerfile 构建镜像并打上标签。 |
docker images 或 docker 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 ps 或 docker 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