Docker及K8S常用命令使用总结
(1)镜像的查看与删除查看镜像:docker images或docke image ls删除容器:docker rm容器ID//注意删除容器前先停止容器删除镜像:docker rmi 镜像名//注意删除镜像前先删除容器(2)容器的启动与进入运行容器:docker run -it 镜像名 /bin/bash退出容器:exit或者Ctrl+P+Q查看容器:docker ps -a查看运行的容器:doc
目录
一、Docker常用命令总结
1、Docker容器常用操作
(1)镜像的查看与删除
- 查看镜像:docker images 或 docke image ls
- 删除容器:docker rm 容器ID //注意删除容器前先停止容器
- 删除镜像:docker rmi 镜像名 //注意删除镜像前先删除容器
(2)容器的启动与进入
- 运行容器:docker run -it 镜像名 /bin/bash
- 退出容器:exit 或者 Ctrl+P+Q
- 查看容器:docker ps -a
- 查看运行的容器:docker ps
- 容器停止:docker stop 容器ID
- 启动容器:docker start 容器ID
- 重启容器:docker restart 容器ID
- 重启容器后进入交互式:docker start -i 5c6ce895b979
- 进入容器:docker attach 容器ID docker exec -it 容器ID /bin/bash
- 举例:将nginx镜像运行为一个容器:docker run -d -p 81:80 -it nginx /bin/bash //其中-d是保持后台运行,-p 是端口映射,将内部的端口80向外部的端口81映射,/bin/bash就表示启动容器后启动bash。
(3)通过容器提交镜像
- 提交镜像:docker commit 容器ID 镜像名[:tag] 举例:docker commit f7507396068a vehicle_detect:v1
(4)镜像的保存与加载
- 保存镜像:docker save m2>m2.tar //保存m2镜像到m2.tar文件
- docker save m2 -o /home/m2.tar
- 镜像加载:docker load<m2.tar
- docker load -i m2.tar
(5)容器与主机之间进行数据拷贝
- 主机目录拷贝到容器目录:docker cp /data/test 96f7f14e99ab:/data/ # 将主机/data/test目录拷贝到容器96f7f14e99ab的/data目录下
- 主机目录拷贝到容器目录,目录重命名:docker cp /data/test 96f7f14e99ab:/data # 将主机/data/test目录拷贝到容器96f7f14e99ab中,目录重命名为data
- 容器目录拷贝到主机目录:docker cp 96f7f14e99ab:/data /tmp/ # 将容器96f7f14e99ab的/data目录拷贝到主机的/tmp目录中
(6)镜像重命名
- 重命名镜像:docker tag ubuntu:15.10 asialee/ubuntu:v3 #将镜像ubuntu:15.10标记为 asialee/ubuntu:v3 镜像
(7)使用GPU运行容器
- 容器使用所有GPU:docker run -it --gpus all vehicle_detect:v1 /bin/bash
- 容器使用两个GPU:docker run -it --gpus 2 vehicle_detect:v1 /bin/bash
- 容器指定GPU运行:docker run -it --gpus ' "device=1,2" ' vehicle_detect:v1 /bin/bash
- docker run -it --gpus ' "device=UUID-ABCDEF,1" ' vehicle_detect:v1 /bin/bash
(8)容器的保存与导入
- 将容器保存为tar文件:docker export -o m2.tar 容器ID
- 举例:将id为a404c6c174a2的容器按日期保存为m2-20201016.tar文件
docker export -o m2-`date +%Y%m%d`.tar a404c6c174a2
- 从归档文件中创建镜像:docker import m2.tar m3:v1
- 举例:从镜像归档文件m2.tar创建镜像,命名为asialee/m3:v1
docker import m2.tar asialee/m3:v1
区别:
- - docker save 保存的是镜像(image),docker export 保存的是容器(container);
- - docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像;
- - docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
(9)镜像的拉取与上传
- 从镜像仓库中拉取或者更新指定镜像:docker pull
- 举例:从Docker Hub下载ubuntu最新版镜像:docker pull ubuntu
- 从Docker Hub下载REPOSITORY为ubuntu的所有镜像:docker pull -a ubuntu
- 将本地的镜像上传到镜像仓库:docker push #要先登陆到镜像仓库
- 举例:上传本地镜像m2:v1到镜像仓库中:docker push m2:v1
- 登录镜像仓库:docker login local.harbor.com 用户名/密码
- docker login -u asialee -p root12345 local.harbor.com
- 镜像上传:docker push local.harbor.com/library/ai-detect
(10)查看docker容器内的IP
- 进入容器后,查看docker容器内的IP:cat /etc/hosts
2、注意事项
镜像转文件的命令是: docker save image > /root/image.tar
文件转镜像的命令是: docker load < /root/image.tar 或者 docker load -i /root/image.tar
错误 1 是: requested load from stdin, but stdin is empty
结论 : docker load 的时候, < 误写成 >, 会出现这个错误,并且原 tar 包会被修改,修改后就不可用了
错误 2 是: open /var/lib/docker/tmp/docker-import-054903443/repositories: no such file or directory
结论 : 如果你使用过错误1 中的命令,那么即使之后的命令都是正确的,也会遇到上述错误,避免的办法是不要输错命令。倘若已经输错了,那么唯一可用的方法是删除当前的 tar 包,并且重新获取 tar 包。
二、k8s常用命令总结
kubectl是Kubernetes的命令行工具,可以让用户通过命令行的方式对Kubernetes集群进行操作,通过它与Kubernetes进行交互。通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。
1、kubectl用法概述
(1)kubectl命令行的语法如下
$ kubectl [command] [TYPE] [NAME] [flags]
- command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
- TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的 (1) kubectl get pod pod1 ,(2)kubectl get pods pod1,(3)kubectl get po pod1。
- NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
- flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
kubectl可操作的资源对象类型如下所示:
资源对象的名称 | 缩写 |
cluster | |
componentstatuses | cs |
configmaps | cm |
daemonsets | ds |
deployments | deploy |
endpoints | ep |
events | ev |
horizontalpodautoscalers | hpa |
ingresses | ing |
Jobs | |
limitranges | limits |
nodes | no |
namespace | ns |
networkpolicies | |
statefulsets | |
persistentvolumeclaims | pvc |
persistentvolumes | pvc |
pods | po |
podsecuritypolicies | psp |
podtemplate | |
replicasets | rs |
replicationcontrollers | rc |
resourcequotas | quota |
cronjob | |
secrets | |
serviceaccounts | |
services | svc |
storageclasses | sc |
thirdpartyresources |
(2)同时对多个资源对象进行操作
在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下。
- 获取多个Pod的信息:kubectl get pods pod1 pod2
- 同时应用多个yaml文件,以多个-f file参数表示:kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
2、kubectl输出格式
kubectl 命令可以用多种格式对结果进行显示,输出的格式通过-o参数指定:
$ kubectl [command] [TYPE] [NAME] -o=<output_format>
根据不同子命令的输出结果,可选的输出格式如下:
常用的输出格式示例如下:
- 显示Pod的更多信息:kubectl get pod <pod-name> -o wide
- 以yaml格式显示Pod的详细信息:kubectl get pod <pod-name> -o yaml
- 以JSON格式显示Pod的详细信息:kubectl get pod <pod-name> -o json
- 以自定义列名显示Pod的信息:kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
3、kubectl常用操作
(1)创建资源对象
- 根据yaml配置文件创建资源对象:kubectl create -f ***.yaml
(2)查看资源对象
- 查看资源版本标签:kubectl api-versions
- 查看集群状态:kubectl get cs
- 查看集群节点信息:kubectl get nodes
- 查看所有Pod列表:kubectl get pods
- 查看deployment:kubectl get deploy
- 查看端口映射:kubectl get svc
- 查看指定命名空间的服务:kubectl get svc -n kubectl-system
- 显示运行中的Pod、Service、Deployment以及ReplicaSet的关键信息:kubectl get all
- 查看所有的命名空间:kubectl get all --all-namespace
(3)描述资源对象
- 显示Node的详细信息:kubectl describe nodes <node-name>
- 显示Pod的详细信息:kubectl describe pods <pod-name>
- 显示由RC管理的Pod的信息:kubectl describe pods <rc-name>
(4)删除资源对象
- 基于pod.yaml定义的名称删除Pod:kubectl delete -f pod.yaml
- 删除所有Pod:kubectl delete pods --all
- 于删除名称为my_pod的Pod:kubectl delete pod my_pod
(5)执行容器命令
- 执行Pod的date命令:kubectl exec <pod-name> date
- 指定Pod中某个容器执行date命令:kubectl exec <pod-name> -c <container-name> date
- 通过bash进入容器:kubectl exec -it <pod-name> -c <container-name> /bin/bash
- kubectl exec -it container-name /bin/bash
(6)查看容器日志
- 查看容器输出到stdout的日志:kubectl logs <pod-name>
- 跟踪查看容器的日志,相当于tail -f命令的结果:kubectl logs -f <pod-name> -c <container-name>
(7)查看集群信息
- 查看集群状态信息:kubectl cluster-info
三、nvidia-smi常用命令总结
nvidia-smi提供监控GPU使用情况和更改GPU状态的功能,是一个跨平台工具,它支持所有标准的NVIDIA驱动程序。
1、显示所有GPU的当前信息状态
命令:nvidia-smi
- Fan:风扇转速,从0到100%之间变动,N/A表示没有风扇
- Temp: GPU温度,单位摄氏度(GPU温度过高会导致GPU频率下降)
- Perf:性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能
- Pwr: GPU功耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。
- Bus-Id:GPU总线,domain:bus:device.function
- Disp.A:Display Active,表示GPU的显示是否初始化
- Memory-Usage:显存使用率
- Volatile GPU-Util:GPU使用率
- ECC:是否开启错误检查和纠正技术,0/DISABLED, 1/ENABLED
- Compute M.:计算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
2、实时查看GPU使用情况
- 实时刷新GPU使用状态并高亮显示:watch -n 0.1 -d nvidia-smi
- 设置每 0.2s 刷新一次:watch -n 0.2 nvidia-smi
更多推荐
所有评论(0)