上篇讲述了docker的最佳入门实践,在这篇中进行讲解下docker目前我所经常使用的操作,顺带也看看其他的一些操作。
在进行各种实验的时候,注意选择合适的环境,否则你会死在实验的路上,环境没搭建成功,你已经心力憔悴了。。。。
在进行各种实验性技术的时候,最好还是不要用RHEL系列,坑不是一点点的多,很多的软件都不支持,例如docker,varnish,手动编译其实是一种很痛苦的过程(我会告诉你我花了18天编译了ansible么,怨念啊),推荐使用centos或者ubuntu。
在进行虚拟机环境使用的时候,推荐还是使用vmware吧,虽然我更喜欢virtualbox,但是有的时候,版本不对(我会告诉你换了多少个版本吗),一个是windows上装的纠结,另外一个就是在使用kvm开启cpu硬件辅助虚拟化的时候,有可能无法开启。
1、 进入容器
在集群环境中,各种各样的vm虚拟机,各种各样的docker,层出不穷,都没搞清楚架构。。。。docker大部分都是运行在vm之中,物理机划分为多个vm,也有的docker是直接运行在物理机上。。
一般的步骤就是,先登录到vm虚拟机中,然后使用dokcer客户端进行登录容器,在使用的参数中exec表示在一个运行的容器中执行命令,参数-i,表示交互式执行,-t表示分配一个伪终端tty,然后就是容器的名称或者容器的id都可以,最后就是你要执行的命令,一般都是分配到一个shell窗口进行执行命令,所以一般都是/bin/bash。
在第一个报错中,主要是未写上要执行的命令,从而也可以看到exec的帮助,在运行命令的时候,一般都是写上全路径,因为有的时候如果容器未设置环境变量,那么有可能找不到这个命令,但是有的容器就是没有这个命令。
进入busybox(这个的shell是sh,每个还是略微有区别的):
容器虽然有ip地址,但是基本上是不会直接ssh进去的,不过有的也是可以的,只是目前使用的很少。
2、 查看容器的日志
在很多的时候,需要查看docker产生的日志来排查问题。
在如上的图中,主要是用来查看nginx的访问日志,在日志很多的时候,可以使用重定向将日志保存到文件中,然后再来查看,当然,如果日志太多,可以使用参数,具体看man帮助。
3、 启动,停止,重启容器
重启大法好。。。每次服务不好使了,就重启下。。。其实和人一样一样的,睡一觉就好了。。。使用stop停止容器,使用start启动容器,使用restart重启容器,可以看到重启之后,日志并不会丢失。
停止的容器并没有跑路,那么怎么找到呢?
在使用ps指令的时候,默认的时候只显示正在运行的容器,要想显示所有的容器只要加上参数-a即可,表示all。
1、 端口映射
在容器中运行一个nginx。
首先从公告仓库中获取到nginx的镜像,pull下载到本地;docker image查看本地镜像,然后根据镜像创建一个docker的实例,也就是容器nginx,然后运行实例,请求这个端口得到结果,查看本机已经监听了这个端口,docker port主要用来查看端口的映射关系。
2、dangling的image文件
这种情况的产生,主要是由于在保存docker镜像文件的时候,已经存在了同名的文件,从而会出现这种。
删除此种镜像文件的时候,可以使用rmi,其实和删除其他的镜像文件是一样一样的,只是会出现none,产生的原因比较奇怪而已。
3、 查看网络情况
在默认安装docker的时候,会自动创建一个桥接的网络。
在创建容器之后,也可以查看到这个网络中有哪些容器实例。
默认使用的桥接的网络。
其实这些命令毫无意义。。。因为只是单纯的操作。。。
不带感情的操作是无意义的,好玩的只是背后的原理。美丽的皮囊千篇一律,有趣的灵魂万里无一。。。
一个物理机上分布多少个VM是合适的?根据什么标准来划分?CPU还是内存?一个虚拟机上运行多少个docker是合适的?根据什么标准来划分?程序的功能和用途?
很多东西,只要知道为什么就好了。。。这才是最好玩的地方,不合理的地方总是有奇怪的解决方法,还是很好玩的。