在企业应用中,docker和k8s作为服务运行在企业环境中,一些docker和k8s相关命令我们在测试或者生产环境中都会用到,我们来看一下常用的一些命令:
强烈建议收藏!!!
- 不定期会更新和补充一部分
- 首先我们看一下docker的一些常用命令
docker在企业中用到的命令
如,删除容器/镜像,查看容器/镜像,修改镜像标签、创建容器等等…
[ 附docker的详细文章 容器 —— Docker容器化技术理解和使用 ]
那么我们如何查看机器上有哪些容器呢?
其实很简单
查看运行容器
docker ps -a
如图:
如果需要查看所有容器的话:
查看所有容器
docker ps -a
#查看所有容器
停止正在运行的所有容器
docker stop `docker ps -a -q`
docker 给镜像打tag
docker tag 镜像ID gaha/nginx:dev
#镜像ID后面为:仓库名/容器名:标签(标签可以是分支可以是版本号)
使用 docker commit 指令,把一个正在运行的容器,直接提交为一个镜像
docker commit 容器ID 要生成的镜像名
docker tag 镜像ID Redis:latest
企业环境中,有一些机器是无法访问外网的,那么我们可以通过将运行中的容器commit成image(上面commit命令),或者直接将需要的镜像打成tar包,再导入到其他的机器上面。
将容器的文件系统打包成tar包
docker save -o 容器ID 镜像名:tag
如图,打包好了
如果需要上传该tar包的镜像,那么:
上传镜像
docker load < name.tar
在这里我先删除Redis的相关镜像
docker rmi 镜像名:rag
然后再导入
导入完成 ,那么我们如何运行或者进入一个容器呢?
ps .下载镜像
docker pull nginx:1.8
启动/运行容器
docker run --name nginx_80 --restart=always -d -it -p 80:80 -v /var/www/:/var/www/ nginx:1.8
#启动命令 --name 指定启动名称 --restart=always保持重启参数可加可不加 -d后台 -p端口映射 -v 目录映射 最后镜像名:tag
进入一个容器:
docker exec -it 容器ID /bin/bash
如图:
这样可以在一个容器里进行相关操作
在这里还有两个很重要的命令 cp
1.将宿主机资源拷贝到容器中去
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
2.查看容器的日志
docker logs -f 容器ID
- 延伸用法
查看某时间之后的日志:
$ docker logs -t --since="2021-06-08T13:23:37" CONTAINER_ID
查看某时间段日志:
$ docker logs -t --since="2021-06-08T13:23:37" --until "2021-06-09T12:23:37" CONTAINER_ID
查看容器详细信息
docker inspect 容器ID
慎用:
- 如果我们本台机器不做当前业务,要做他用,那么可以删除所有容器:
docker rm $(docker ps -a -q)
#删除所有容器
上图可以看到有很多报错,是因为有很多容器正在运行状态,即running
那么我们可以添加一个参数强制删除
--force
如图:
同理,也可以使用另外一条命令:
docker stop $(docker ps -q) & docker rm $(docker ps -aq)
其次是删除所有镜像:
docker rmi $(docker images -q)
#-q查出所有id号
同样我们可以用build选项创建镜像持续以上步骤
docker build创建镜像
docker build -t vcc/sinatra:v2
运行容器:
如:
docker run -t -i vcc/sinatra:v2 /bin/bash #前台运行直接进入
docker run -d --name redis -p 6379:6379 redis --requirepass '123!' #运行及连接 p端口映射本机:容器,镜像名
在这里就不做示范了,一般在k8s环境,创建完pod,会有相关的pod和镜像自动运行或者生成。
接下来我们来看一下kubernetes 的一些常用命令/使用方式。
k8s在企业中的常用命令
首先,还是最基础,查看node节点,查看pod等等
在这里先附上之前的一些kubernetes学习的理论及相关技术基础
容器 & k8s——Kubernetes详解 & 集群部署 & Metrics-Server
容器 & k8s——kubernetes kubectl工具使用
–
查看node/pod…
kubectl get [ pod node cs service secret configmap daemonset deployment..... ]
查看pod node 健康状态等等
-n 指定namespaces
-o wide 查看pod运行节点
-A 查询所有namespaces中的Pod
如:
那么一套新的环境,需要创建新的命名空间如何创建呢?
创建ns
kubectl create ns shuaine
#创建ns
kubectl get ns
#获取ns
kubectl delete ns shuaine
#删除ns
如图示:
那么使用编排工具k8s如何创建pod呢?
创建pod
- 创建并运行一个pod:
kubectl run nginx_latest --image=daocloud.io/library/nginx:latest --port=80
# 运行命令,指定运行名称 --image指定镜像可直接下载 --port 指定映射端口
kubectl create -f *.yaml
也可以撰写yaml文件直接运行
指定yaml创建运行参考文章 k8s——Kubernetes配置yaml文件详解(文章包括yaml文件的介绍,写法等等)
k8s查看容器详细信息
kubectl describe type [pod node service secret configmap .....]
-n 多个ns需要指定namespaces,写法-n ns名
如 kubectl describe pod podname
删除容器
kubectl delete -f *.yaml 删除根据yaml文件创建的资源
kubectl delete pod podname 删除pod
** k8s集群中 dashboard 密钥获取**
kubectl get secret -n kube-system |grep admin |awk '{print $1}'
kubectl describe secret admin-user-token-wwfb2 -n kube-system |grep '^token'|awk '{print $2}'
日常使用比较多的有:
查看deployment信息,可以查看其yaml:
kubectl describe deployment apm-democ-demoa -n springcloudtest
那么比如,我们需要临时不向某一个节点调度该如何操作呢?
k8s暂停某个节点调度
kubectl cordon node_name #暂停
kubectl uncordon node_name #取消暂停调度
以上就是docker和k8s的一些常用命令,get后日常维护集群不用愁
下面再补充一部分相较于以上文章总结,稍微进阶的教程:
具体参考:
k8s —— Kubernetes私服Registry&Harbor(本地镜像仓库)
k8s——kubernetes 检查恢复机制–PodPreset
k8s——Kubernetes部署HELM & HELM部署Prometheus