【部署相关】Docker&Kuberbetes常用命令大全(速查+解释)

一、Docker常用命令

  1. 镜像相关
bash 复制代码
# 拉取镜像
docker pull nginx:latest

# 查看本地镜像
docker images

# 删除镜像
docker rmi nginx:latest

# 构建镜像
docker build -t myapp:v1 .
  1. 容器运行管理相关
bash 复制代码
# 启动一个新的容器(如果本地没有该镜像则docker会自动拉取)
docker run -d --name mynginx -p 8080:80 nginx:latest

# 查看运行中的容器
docker ps

# 查看所有容器,包括已经退出的
docker ps -a

#停止容器/启动容器
docker stop mynginx
docker start mynginx

#删除容器 加上-f可以强制删除
docker rm mynginx
  1. 容器内部操作
bash 复制代码
# 进入容器内部交互终端
docker exec -it mynginx /bin/bash

# 查看容器日志
docker logs -f mynginx
  1. 其他常用
bash 复制代码
# 查看系统资源使用
docker stats

# 清理无用资源(dangling镜像,停止的容器)
docker system prune -发

二、docker-compose常用命令

bash 复制代码
# 启动(后台)
docker-compose up -d

# 停止并删除容器
docker-compose down 

# 查看服务日志
docker-compose logs -f 

# 重启服务
docker-compose restar

三、Docker Swarm(集群控制)

swarm 是Docker自带的原生集群与服务编排模式,和Docker-compose配合可以扩展到多机。

  1. 初始化&节点管理
bash 复制代码
# 初始化swarm 当前节点为manager
docker swarm init

# 让worker节点加入集群(在其他节点执行)
docker swarm join --token <token> <manager-ip>:2377

# 查看当前节点信息
docker node ls 

# 查看节点的详细状态
docker node inspect <node-id>
  1. 服务管理(service)
bash 复制代码
# 创建一个服务(类似k8s deployment)
docker service create --name myweb -p 80:80 nginx;lastest

# 查看服务列表
docker service ls

# 查看某个服务的人物(容器副本)
docker service ps myweb

# 扩缩容器服务
docker service scale myweb=5

# 滚动更新服务镜像
docker service update --image nginx:1.25 myweb

# 删除服务
docker service rm myweb
  1. Stack(编排应用,支持docker-compose.yml)
bash 复制代码
# 部署一个stack(需要在swarm下)
docker stack deploy -c docker-compose.yaml mystack

# 查看stack
docker stack ls 

# 查看stack内的服务
docker stack services mystack

# 查看stack内的pod/容器(task)
docker stack ps mystack

# 删除stack
docker stack rm mystack
  1. 集群状态调试
bash 复制代码
# 查看swarm信息
docker info 

# 查看网络(overlay 网络)
docker network ls 
docker network inspect <network-name>

四、Kubernetes常用命令

  1. 基本资源查看
bash 复制代码
# 查看节点
kubectl get nodes

#查看pod
kubectl get pods -n default
kubectl get pods -A

# 查看Deployment / service
kubectl get deploy -n default
kubectl get svc -n default
  1. 资源详细信息
bash 复制代码
# 查看pod详情(事件、状态等)
kubectl describe pod mypod -n default

# 查看pod日志
kubectl logs mypod -n default
kubectl logs -f mypod -c mycontainer -n default
  1. pod调试
bash 复制代码
# 进入pod容器
kubectl exec -it mypod -n default -- /bin/bash

# 启动一个临时pod调试网络
kubectl run tmp --rm -it --image=busybox -- /bin/sh
  1. 部署管理
bash 复制代码
# 应用yaml配置
kubectl apply -f deployment.yaml

# 删除资源
kubectl delete -f depliyment.yaml
kubectl delete pod -n default

# 滚动更新
kubectl rollout restart deployment myapp -n default
kubectl rollout status deployment myapp -n default
  1. 集群&调度
bash 复制代码
# 查看命名空间
kubectl get ns

# 切换命名空间
kubectl config set-context --current --namespace=myapp

# 查看时间
kubectl get events -n default --sort-by=.metdata.creationTimestamp

五、日常排错组合

bash 复制代码
# pod crashLoopBackOff
kubectl describe pod <pod> -n <ns>
kubectl logs --previous <pod> -n <ns>

# 查看容器是否OOMkilled
kubectl describe pod <pod> | grep -A5 "Last State"

# 本地临时测试POd
kubectl run -it tmp --rm --image=alpine -- sh

六、总结

Docker更偏向单机容器生命周期管理,常用docker run / ps / logs / exec

docker-compose 用来快速编排多容器应用

kubernetes则是生产级容器编排,常用kubectl get / describe / logs / exec / apply / delete

场景 Docker单机 Docker Swarm Kubernetes(kubectl)
启动容器 docker run docker service create kubectl run / apply
查看运行实例 docker ps docker service ps kubectl get pods
扩缩容 手动多次run docker service scale kubectl scale
滚动更新 需要手动stop&run docker service update kubectl rollout
多容器编排 docker-compose up docker stack deploy kubectl apply
集群节点管理 docker node ls kubectl get nodes