Docker和Kubernetes 常用命令

一、获取镜像 / 容器的名称和 ID 的方法

bash 复制代码
获取镜像名和 ID:执行docker images,输出列表中 "REPOSITORY:TAG" 为镜像名(含标签),"IMAGE ID" 为镜像 ID(可简写前几位)。
获取容器名和 ID:执行docker ps(查看运行中容器)或docker ps -a(查看所有容器),输出列表中 "NAMES" 为容器名,"CONTAINER ID" 为容器 ID(可简写前几位)。

二、Docker 常用命令

1. 镜像管理(Image)

powershell 复制代码
docker pull <镜像名:标签>:从镜像仓库拉取镜像。案例:拉取最新版 Nginx 镜像,执行docker pull nginx:latest。
docker images:查看本地所有镜像。案例:直接执行docker images,可查看镜像的名称、ID、大小等信息。
docker rmi <镜像ID/名称>:删除本地镜像(需先删除依赖该镜像的容器)。案例:删除 Nginx 镜像,执行docker rmi nginx:latest(若有容器依赖,需先删除容器)。
docker build -t <镜像名:标签> <Dockerfile路径>:基于 Dockerfile 构建镜像。案例:在当前目录(含 Dockerfile)构建名为myapp:v1的镜像,执行docker build -t myapp:v1 .。
docker tag <原镜像> <新镜像名:标签>:为镜像打新标签(用于推送仓库时重命名)。案例:将myapp:v1标记为可推送到 Docker Hub 的格式,执行docker tag myapp:v1 username/myapp:v1(username为 Docker Hub 用户名)。
docker push <镜像名:标签>:推送镜像到远程仓库(需先登录)。案例:推送镜像到 Docker Hub,先执行docker login输入账号密码,再执行docker push username/myapp:v1。
docker inspect <镜像名>:查看镜像详细信息(如分层、环境变量)。案例:查看 Nginx 镜像详情,执行docker inspect nginx:latest。

2. 容器管理(Container)

bash 复制代码
docker run [参数] <镜像名>:创建并启动容器(核心命令,参数极多)。案例:启动一个 Nginx 容器,执行docker run -d -p 8080:80 --name mynginx nginx:latest(-d:后台运行;-p 8080:80:将容器 80 端口映射到主机 8080 端口;--name:指定容器名)。
docker ps:查看运行中的容器。案例:直接执行docker ps,可查看当前运行的容器列表。
docker ps -a:查看所有容器(含已停止的)。案例:直接执行docker ps -a,可查看所有容器的状态。docker stop <容器名/ID>:停止运行中的容器。案例:停止名为mynginx的容器,执行docker stop mynginx。
docker start <容器名/ID>:启动已停止的容器。案例:启动mynginx,执行docker start mynginx。
docker restart <容器名/ID>:重启容器。案例:重启mynginx,执行docker restart mynginx。
docker rm <容器名/ID>:删除容器(需先停止,或用-f强制删除运行中容器)。案例:强制删除运行中的mynginx,执行docker rm -f mynginx。
docker exec -it <容器名/ID> <命令>:进入容器内部执行命令(-it:交互式终端)。案例:进入mynginx容器并打开 bash,执行docker exec -it mynginx /bin/bash。
docker logs <容器名/ID>:查看容器日志(-f:实时跟踪日志)。案例:实时查看mynginx的访问日志,执行docker logs -f mynginx。
docker inspect <容器名/ID>:查看容器详细信息(如 IP、挂载、网络)。案例:查看mynginx的 IP 地址,执行docker inspect mynginx | grep "IPAddress"。

3. 网络管理(Network)

bash 复制代码
docker network ls:查看所有 Docker 网络。案例:直接执行docker network ls,可列出系统中的网络(默认有 bridge、host、none 三种)。
docker network create --driver <驱动> <网络名>:创建自定义网络(推荐用 bridge 驱动,支持容器名通信)。案例:创建名为mybridge的桥接网络,执行docker network create --driver bridge mybridge。
docker network connect <网络名> <容器名>:将容器加入指定网络。案例:将mynginx加入mybridge网络,执行docker network connect mybridge mynginx。
docker network disconnect <网络名> <容器名>:将容器从网络中移除。案例:从mybridge中移除mynginx,执行docker network disconnect mybridge mynginx。

4. 数据卷管理(Volume)

bash 复制代码
docker volume ls:查看所有数据卷。案例:直接执行docker volume ls,可列出数据卷列表。
docker volume create <卷名>:创建数据卷。案例:创建名为myvolume的数据卷,执行docker volume create myvolume。
docker run -v <卷名:容器路径> <镜像名>:启动容器时挂载数据卷。案例:启动 Nginx 并将myvolume挂载到容器的/usr/share/nginx/html(网页目录),执行docker run -d -p 80:80 -v myvolume:/usr/share/nginx/html --name mynginx nginx。
docker run -v <主机路径:容器路径> <镜像名>:挂载主机目录到容器(非数据卷,直接绑定)。案例:将主机/home/data目录挂载到 Nginx 的网页目录,执行docker run -d -p 80:80 -v /home/data:/usr/share/nginx/html mynginx。
docker volume rm <卷名>:删除数据卷(需先解除挂载)。案例:删除myvolume,执行docker volume rm myvolume。

三、Kubernetes(K8s)常用命令(kubectl)

1. 集群基础操作

bash 复制代码
kubectl cluster-info:查看集群信息(API Server 地址等)。案例:检查集群是否正常运行,执行kubectl cluster-info。
kubectl get nodes:查看集群所有节点状态。案例:列出节点及状态(Ready 为正常),执行kubectl get nodes。
kubectl describe node <节点名>:查看节点详细信息(资源、标签等)。案例:查看节点node-1的详情,执行kubectl describe node node-1。

2. Pod 操作(Pod 是最小部署单元,含一个或多个容器)

bash 复制代码
kubectl get pods:查看当前命名空间的 Pod。案例:列出所有运行中的 Pod,执行kubectl get pods。
kubectl get pods -n <命名空间>:查看指定命名空间的 Pod。案例:查看kube-system命名空间的 Pod(系统组件),执行kubectl get pods -n kube-system。
kubectl get pods -o wide:查看 Pod 的 IP、运行节点等详细信息。案例:查看 Pod 的 IP 和所在节点,执行kubectl get pods -o wide。
bash 复制代码
kubectl create -f <pod.yaml>:基于 YAML 文件创建 Pod。案例:假设pod.yaml内容为:
yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: nginx
    image: nginx:latest
执行kubectl create -f pod.yaml创建 Pod。
bash 复制代码
kubectl describe pod <pod名>:查看 Pod 详情(事件、容器状态等)。案例:查看mypod的详情(排查启动失败原因),执行kubectl describe pod mypod。
kubectl logs <pod名>:查看 Pod 中容器的日志(多容器需用-c <容器名>指定)。案例:查看mypod中 nginx 容器的日志,执行kubectl logs mypod -c nginx。
kubectl exec -it <pod名> -- <命令>:进入 Pod 中的容器执行命令。案例:进入mypod的 nginx 容器,执行kubectl exec -it mypod -- /bin/bash。
kubectl delete pod <pod名>:删除 Pod。案例:删除mypod,执行kubectl delete pod mypod。

3. Deployment 操作(管理 Pod 的控制器,负责 Pod 的创建、扩缩容、更新)

bash 复制代码
kubectl get deployments:查看 Deployment 列表。案例:列出所有 Deployment,执行kubectl get deployments。
kubectl create deployment <名称> --image=<镜像>:快速创建 Deployment。案例:创建名为mydeploy、使用 nginx 镜像的 Deployment,执行kubectl create deployment mydeploy --image=nginx:latest。
kubectl scale deployment <名称> --replicas=<数量>:扩缩容 Deployment(调整 Pod 副本数)。案例:将mydeploy的 Pod 副本数调整为 3,执行kubectl scale deployment mydeploy --replicas=3。
kubectl set image deployment <名称> <容器名>=<新镜像>:更新 Deployment 的容器镜像(滚动更新)。案例:将mydeploy中 nginx 容器的镜像更新为nginx:1.21,执行kubectl set image deployment mydeploy nginx=nginx:1.21。
kubectl rollout status deployment <名称>:查看 Deployment 更新状态。案例:查看mydeploy的滚动更新进度,执行kubectl rollout status deployment mydeploy。
kubectl rollout undo deployment <名称>:回滚 Deployment 到上一版本。案例:回滚mydeploy的更新,执行kubectl rollout undo deployment mydeploy。
kubectl delete deployment <名称>:删除 Deployment(关联的 Pod 会被自动删除)。案例:删除mydeploy,执行kubectl delete deployment mydeploy。

4. Service 操作(暴露 Pod 网络,实现 Pod 访问入口)

bash 复制代码
kubectl get services(简写kubectl get svc):查看 Service 列表。案例:列出所有 Service,执行kubectl get svc。
kubectl expose deployment <deployment名> --port=<端口> --target-port=<容器端口> --type=<类型>:为 Deployment 创建 Service。案例:为mydeploy创建 NodePort 类型的 Service(外部可通过节点 IP + 端口访问),执行kubectl expose deployment mydeploy --port=80 --target-port=80 --type=NodePort。
kubectl describe service <service名>:查看 Service 详情(IP、端口映射等)。案例:查看mydeploy对应的 Service 详情,执行kubectl describe service mydeploy。
kubectl delete service <service名>:删除 Service。案例:删除mydeploy对应的 Service,执行kubectl delete service mydeploy。

5. 配置管理(ConfigMap/Secret,存储配置信息)

bash 复制代码
kubectl create configmap <名称> --from-literal=<键=值>:创建 ConfigMap(存储非敏感配置)。案例:创建myconfig,存储env=prod,执行kubectl create configmap myconfig --from-literal=env=prod。
kubectl create secret generic <名称> --from-literal=<键=值>:创建 Secret(存储敏感配置,如密码)。案例:创建mysecret,存储password=123456,执行kubectl create secret generic mysecret --from-literal=password=123456。
kubectl get configmaps(简写cm):查看 ConfigMap。案例:列出所有 ConfigMap,执行kubectl get cm。
kubectl get secrets:查看 Secret。案例:列出所有 Secret,执行kubectl get secrets。

6. 命名空间(Namespace,隔离集群资源)

bash 复制代码
kubectl get namespaces(简写ns):查看所有命名空间。案例:列出命名空间,执行kubectl get ns。
kubectl create namespace <名称>:创建命名空间。案例:创建myns命名空间,执行kubectl create namespace myns。
kubectl -n <命名空间> <命令>:在指定命名空间执行命令。案例:在myns中创建 Deployment,执行kubectl create deployment mydeploy --image=nginx -n myns。

7. 其他核心命令

bash 复制代码
kubectl apply -f <文件>:基于 YAML/JSON 创建或更新资源(推荐用,比create更灵活)。案例:用app.yaml创建资源,执行kubectl apply -f app.yaml。
kubectl delete -f <文件>:删除 YAML/JSON 中定义的资源。案例:删除app.yaml中的资源,执行kubectl delete -f app.yaml。
kubectl explain <资源>:查看资源的字段说明(编写 YAML 时用)。案例:查看 Pod 的 spec 字段说明,执行kubectl explain pod.spec。
相关推荐
❀͜͡傀儡师4 小时前
docker-compose一键部署Hadoop集群
hadoop·docker·容器
java_logo5 小时前
BUSYBOX Docker 容器化部署指南
java·运维·python·nginx·docker·容器·运维开发
Linux运维技术栈8 小时前
从Docker到宝塔:Magento2 2.3.5 安装全流程踩坑与成功实践
运维·adobe·docker·容器·magento2
_abcdef8 小时前
Kubernetes 资源清单
云原生·容器·kubernetes
大心匠8 小时前
docker安装Nodered连接homeassistant
docker·容器·homeassistant·nodered·排查故障
奋斗的蛋黄9 小时前
KEDA 深度解析:K8s 事件驱动自动扩缩容的核心实践
云原生·容器·kubernetes
ITVV10 小时前
Docker 安装配置
运维·docker·容器
m***119011 小时前
Redis 设置密码(配置文件、docker容器、命令行3种场景)
数据库·redis·docker
麦兜*13 小时前
Redis在Web3中的应用探索:作为链下状态缓存与索引层
java·spring boot·redis·spring cloud·缓存·docker·web3