一、Docker常用命令
- 镜像相关
bash
# 拉取镜像
docker pull nginx:latest
# 查看本地镜像
docker images
# 删除镜像
docker rmi nginx:latest
# 构建镜像
docker build -t myapp:v1 .
- 容器运行管理相关
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
- 容器内部操作
bash
# 进入容器内部交互终端
docker exec -it mynginx /bin/bash
# 查看容器日志
docker logs -f mynginx
- 其他常用
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配合可以扩展到多机。
- 初始化&节点管理
bash
# 初始化swarm 当前节点为manager
docker swarm init
# 让worker节点加入集群(在其他节点执行)
docker swarm join --token <token> <manager-ip>:2377
# 查看当前节点信息
docker node ls
# 查看节点的详细状态
docker node inspect <node-id>
- 服务管理(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
- 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
- 集群状态调试
bash
# 查看swarm信息
docker info
# 查看网络(overlay 网络)
docker network ls
docker network inspect <network-name>
四、Kubernetes常用命令
- 基本资源查看
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
- 资源详细信息
bash
# 查看pod详情(事件、状态等)
kubectl describe pod mypod -n default
# 查看pod日志
kubectl logs mypod -n default
kubectl logs -f mypod -c mycontainer -n default
- pod调试
bash
# 进入pod容器
kubectl exec -it mypod -n default -- /bin/bash
# 启动一个临时pod调试网络
kubectl run tmp --rm -it --image=busybox -- /bin/sh
- 部署管理
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
- 集群&调度
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 |