pkslow.com 南瓜慢说

  • AllArticles
  • Container
  • Spring
  • Life
  • Cloud
  • Collections
  • About
  • GitHub

  • Search
Terraform101 English Terraform Middleware config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac Plan Stream MongoDB Spring DevOps JVM String Map Set List Performance Email Springboot JavaCollections ArrayList Java

Docker和Kubernetes常用命令(持续整理)

Created on: 2020-10-15 | Category: Container | 0 | View: 1559

前言

本文将持续整理收集日常开发和调试用到的Docker和Kubernetes命令,希望对大家有用。

Docker常用命令

登陆仓库:

# 账号密码显示登陆
docker login --username xxx --password xxx nexus.pkslow.com:8081
# 密码保存在文件
docker login --username xxx --password-stdin < password.txt nexus.pkslow.com:8081

镜像管理

列出镜像:

docker images
docker images -a

拉取镜像:

docker pull grafana/grafana:4.0.0

删除镜像:

docker rmi imageId
docker rmi -f imageId
# 删除空悬镜像
docker rmi $(docker images -f "dangling=true" -q)
# 删除空悬镜像另一种形式
docker images -f "dangling=true" -q | xargs docker rmi
# 有选择地删除
docker images | grep tianchi| awk {'print $3'} | xargs docker rmi -f
# 查看更多细节
docker image inspect

通过Dockerfile创建镜像:

docker build -t pkslow/springboot:1.0.0 -f /xxx/Dockerfile /contextDir

导出镜像到文件(保留layer):

docker save -o ./pkslow.tar pkslow/springboot:1.0.0

从文件导入镜像:

docker docker load -i /opt/pkslow/pkslow.tar

导出容器到文件:

docker export containerId > ./springboot.tar

从上面文件导入镜像:

cat springboot.tar | docker import - pkslow/springboot

打新标签:

docker tag pkslow/springboot:latest nexus.pkslow.com/pkslow/springboot:3.6.6

推送镜像到远程仓库:

docker push nexus.pkslow.com/pkslow/springboot:3.6.6

容器管理

启动容器:

docker run -itd --name pkslow -p 8000:8080 -v /mylocal:/container-dir -e "SERVER_PORT=8080" pkslow/springboot:1.0.0

启动设置重启策略:

docker run --restart=always

更新容器重启策略:

docker update --restart=on-failure:10 redis

查看正在运行的容器:

docker ps

查看所有容器:

docker ps -a

查看日志:

docker logs containerId
docker logs -f containerId

到容器执行命令:

docker exec -it containerId /bin/bash

删除容器:

docker rm containerId

强制删除容器:

docker rm -f containerId

文件管理:

# 从宿主复制文件到Docker容器
docker cp pkslow/pkslow.txt 6619ff360cce:/opt/h2-data
# 从宿主复制目录到Docker容器
docker cp pkslow 6619ff360cce:/opt/h2-data

# 从容器复制文件或目录到宿主机器
docker cp 6619ff360cce:/opt/h2-data/pkslow ./
docker cp 6619ff360cce:/opt/h2-data/pkslow/pkslow.txt ./

Kubernetes常用命令

查看:

# 查看Pod
kubectl get pods
# 查看services
kubectl get services
# 查看pvc
kubectl get pvc
# 查看ConfigMap
kubectl get configmaps
# 查看Ingress
kubectl get ingress

标签过滤:

# 显示标签
kubectl get pod -A --show-labels

# 列出某个标签的所有pod
kubectl get pod -A --show-labels -l 'myapp'

# 列出没有某个标签的pod
kubectl get pod -A --show-labels -l '!myapp'

# 列出特定标签值
kubectl get pod -A --show-labels -l 'myapp=nginx'

排序:

# 按名字排序
kubectl get services --sort-by=.metadata.name
# 根据重启次数排序
kubectl get pods --sort-by='.status.containerStatuses[0].restartCount'

查看扩展信息:

kubectl get pods -o wide

扩容:

# 扩容rs
kubectl scale --replicas=3 rs/foo
# 如果当前为2个Pod,则扩容为3个
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# 同时扩容多个
kubectl scale --replicas=5 rc/foo rc/bar rc/baz

删除Pod:

kubectl delete pod podName
# 删除失败的Pod
kubectl get pods | grep Error | awk '{print $1}' | xargs kubectl delete pod
# 删除失败的Pod
kubectl delete pod $(kubectl get pods | grep Error | awk '{print $1}')
# 删除不在运行的Pod
kubectl delete pod --field-selector=status.phase!=Running

查看详情:

kubectl describe quota
kubectl describe pod podName
kubectl describe node docker-desktop

API方式操作资源:

# 指定文件
kubectl apply -f pkslow-springboot-deployment.yaml
# 指定目录
kubectl apply -f /opt/pkslow/k8s

查看日志:

kubectl logs podName
kubectl logs -f podName

进入Pod执行命令:

kubectl exec

查看配置信息:

kubectl config view

指定命令空间:

kubectl get pods -n pkslow-namespace

修改默认命令空间:

kubectl config set-context --current --namespace=pkslow-namespace

命令空间基本操作:

# 查看
kubectl get namespaces
# 创建
kubectl create namespace pkslow
# 删除
kubectl delete namespace pkslow

查看命名空间下所有资源:

kubectl get all --namespace={namespace}
# 或者
kubectl api-resources -o name --verbs=list --namespaced | xargs -n 1 kubectl get --show-kind --ignore-not-found -n {namespace}

删除命名空间下所有资源(强制删除--force --grace-period=0):

kubectl delete all --all -n {namespace}
# 或
kubectl delete ns {namespace}

文件管理:

# 从客户端复制文件或目录到Pod
kubectl cp pkslow.txt h2-db-5967bf999f-8qr87:/opt/h2-data
kubectl cp pkslow h2-db-5967bf999f-8qr87:/opt/h2-data

# 从Pod复制文件回来
# 目标目录要指定,与源文件类型匹配
$ kubectl cp default/h2-db-5967bf999f-8qr87:/opt/h2-data/pkslow ./pkslow
# 目标文件要指定,与源文件类型匹配
$ kubectl cp default/h2-db-5967bf999f-8qr87:/opt/h2-data/pkslow.txt ./pkslow.txt

查看集群的Resources:

kubectl api-resources

查看Events:

kubectl get events --sort-by=.lastTimestamp

Reference:

kubectl Cheat Sheet


Code for all: GitHub

欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

file

Recommendations:
Cloud Native
Terraform
Container: Docker/Kubernetes
Spring Boot / Spring Cloud
Https
如何制定切实可行的计划并好好执行

  • Author 作者: LarryDpk 南瓜慢说
  • Link 链接: https://www.pkslow.com/archives/docker-kubernetes-frequently-used-commands
  • 版权声明: 本博客所有文章除特别声明外,不可转载!
# Terraform101 # English # Terraform # Middleware # config # Go # Private # Kubernetes # pkslow # Test # HTTPS # Redis # Docker # Mac # Plan # Stream # MongoDB # Spring # DevOps # JVM # String # Map # Set # List # Performance # Email # Springboot # JavaCollections # ArrayList # Java
Terraform101 English Terraform Middleware config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac Plan Stream MongoDB Spring DevOps JVM String Map Set List Performance Email Springboot JavaCollections ArrayList Java
Mockito不能mock final类的解决办法
VSCode的REST Client指南,超好用的HTTP客户端工具
  • Contents
  • Site Overview
南瓜慢说

南瓜慢说

多年Java开发,主要专注后端技术:Java/Spring/Springboot/微服务/大数据等。

多读书,多分享;多写作,多整理。

241 Posts
9 Categories
30 Tags
RSS
0%
© 2020 — 2022 南瓜慢说 pkslow The WebSite keeping alive:   粤ICP备20036375号