本篇记录工作项目中经常使用的Docker和K8S命令,我所运行Docker和K8S的工作环境如下所示,大部分本文使用的命令都可以在Linux K8S和Windows10 K8S环境使用,少数命令存在预期结果不一致的地方,请自行查阅资料解决。
注意,这并不是一篇介绍Docker和K8S是什么的文章,入门课程请自行查阅官方文档学习;如果安装Docker和K8S环境也请自行查阅资料解决。
环境安装好之后,便可以直接在Terminal里输入Docker
和Kubectl
命令。
测试Docker环境
1、查看Docker
版本
|
|
2、启动一个nginx服务器,测试Docker环境
|
|
docker run
命令通过镜像创建一个容器,该命令功能强大,参数居多,这里只用到最基本的几个参数。
docker ps
查看当前正在运行的镜像,Status显示内容”Up 15 seconds”表示该容器已经成功启动15秒钟。
浏览器打开http://localhost,可以看到nginx的欢迎页面,说明nginx服务器启动成功。
3、使用docker stop container id
或docker stop container name
停止这个容器(一般倾向于使用container id)
4、容器停止之后,使用docker ps -a
就可以查到该容器的结束记录
|
|
5、对已停止的容器可以使用docker start container id
重新启动这个已停止的容器
6、对正在运行的容器可以使用docker restart container id
来重新启动该容器;当然docker restart container id
也可以对已停止的容器使用
7、容器使用后会产生log日志,我发现不管在macOS还是Windows10,PVC对应的默认文件夹路径都在”your currnet username/.docker/Volumes”这个文件夹下面
使用docker rm container id
可以将已停止运行的容器删除
8、删除已停止的容器后,可以使用docker rmi image id
删除关联的镜像
9、至此,我们的Docker环境测试就结束了;不管你是*nix系统还是Windows系统,只要Docker环境安装成功了,上面的流程都应该能成功。
Docker基础部分
1、docker login private hub url
和docker logout private hub url
环境安装好之后,使用默认的Docker Hub作为镜像仓库;我们工作项目中使用了私有镜像仓库,因此需要先login。
|
|
login成功就可以从这个私有仓库拉取镜像;不想使用私有仓库镜像,只需使用docker logout XXX.XXX.XXX.XXX
退出,就会自动转为使用官方镜像。
2、docker logs -f container id
或docker logs -t container id
查看容器日志
3、容器启动成功后,可以使用docker exec -it container id /bin/bash
或docker attach container id
进入到容器里面
|
|
如上所示,我们输入docker exec -it 3da3748064ea bash
进到了k8s_webserver_airflow-xxxxxxxx容器里面,这个命令非常有用,它可以进到容器里查看环境变量、参数配置、程序代码等信息。
|
|
4、使用docker save image-id
可以将镜像保存为.tar或.zip文件进行备份
其它常用的Docker命令还有很多,比如docker build
构建镜像和docker cp
挂载文件卷等,今天这篇写不完,暂且先跳过,下面写最近常用的K8S命令。
Kubectl基础使用
Docker对应的是容器,K8S在容器的基础上抽象出来Pod的概念,容器包含在它里面。集群以Pod为基本单位进行管理。K8S服务启动后,首先可以查看当前启动了哪些Pod。
1、kubectl get pods --all-namespaces
|
|
namespace为docker
和kube-system
的那些Pod都是K8S环境启动自带的服务,我们不用理会。重点关注namespace为airflow
的这几个Pod。
使用kubectl get pods -n airflow
查看namespace为airflow
的Pod,可以看到airflow-858d8c6fcf-lgpm4这个Pod它里面包含了2个容器,状态都是Running,没有被重启过,Pod成功运行了67分钟。
|
|
2、使用kubectl describe pod pod-name -n airflow
查看Pod运行状态,但通常这个命令我觉得看不到什么有效信息
|
|
4、使用kubectl get event -n airflow
查看K8S启动Pod过程中产生的各类事件,对排查Pod无法启动或启动报错等原因有帮助
5、假如程序版本有变动,需要发布新版本,可以使用kubectl delete pod pod-name
一个一个将Pod删除,然后再重新启动。
逐个删除Pod比较费力,我们可以使用kubectl delete deployment airflow -n airflow
将namespac为airflow
里面Pod名字包含airflow
的全部一次性删除
也可以直接使用kubectl delete namespace airflow
将namespace为airflow
的所有Pod都删除。
6、使用kubectl apply
可以将服务部署到K8S集群里面,这个需要实际操练,本文不做讲解
基础的Docker和K8S命令先简单介绍到这里,经常动手操练,日积月累,才能够做到熟练应用。
常用Docker命令
|
|
常用K8S命令
|
|
参考资料