Docker就是将程序和环境一同打包成一个独立的容器,容器和容器之间独立,可以理解为一个app,一个手机就是一个pod,一个pod上可以运行多个容器,容器之间共享磁盘和网络,每个容器仍然运行在自己的进程空间中,有自己的文件系统和环境变量,它们之间不共享进程空间、文件系统或环境变量。每个容器的生命周期也是独立的,可以单独启动和停止。容器本身就是可特殊进程,
1.Docker file:dockerfile只是描述了要做哪些事情,并没有真正开始做,当我们执行docker build的时候 ,docker软件就会按照dockerfile的说明一行行构建环境加载应用,最终将这个环境加程序打包成一个类似“压缩包"的东西;我们叫它容器镜像 container image ,只要将容器镜像传到任意一台服务器上 对这个压缩包解压缩,我们就能同时运行环境和程序。
2,Docker register:服务器那么多 ,我们挨个将容器镜像传过去也不是不行,就是将压力全给到网络带宽了 ,有没有更好的解决方案,当然有,可以参考github代码仓库的做法,我们通常会使用git push将代码传到github,有需要的人通过使用git pull将代码拉取到本地,那么docker也一样,弄一个镜像仓库;通过docker push将镜像推到仓库,有需要的时候再通过docker pull 将镜像拉到机器上,这个负责管理镜像仓库推拉能力的服务就叫docker register;基于register的能力我们可以搭建各种官方或私人镜像仓库,比如官方的叫做docker hub,一般公司内部也会有自己的镜像仓库。
3.Docker Compse:如果多个容器之间相互依赖启动,某些容器就是需要先启动,按顺序启动容器,所以将启动顺序配置在yaml文件中,通过compse命令加载启动顺序,这样就解决了启动问题,它解决的是一整套服务的部署。
4.Docker swarm:它解决的其实是一整套服务在多台服务器上的集群部署问题,比如某应用在b服务器坏了,就将该应用在a服务器上重新部署一套,实现迁移还能根据需求对应用进行扩缩容。其实可以看出来和k8s的功能很像,其实它们就是一样的作用,它们是竞品。