Docker 容器的运行是基于宿主机的内核,通过linux的namespaces来实现隔离,相对于虚拟机而言降低了硬件资源的性能损耗,且具备一定程度上的应用隔离效果。
另外,通过最小化的镜像方式运行docker 容器,相对于虚拟机而言大幅度降低非生产力进程的资源消耗。
最后使用打包好的镜像,统一了应用程序的运行环境,降低了开发和测试人员的负担,但是增加了运维工作的复杂度。
Docker 客户端启动一个容器时,通过TCP或者unix socket连接docker daemon。如果需要启动的容器镜像本地不存在,则从registry来拉取到本地,然后根据传递的CMD或者默认的CMD来启动容器。
Docker 镜像的命名方式:
${registry_name}/${repository_name}/${image_name}:${tag_name}。
其中默认的registry_name为docker.io,repository_name默认值为library,默认tag_name为lastest。lastest为一个指针,可以指向任意一个版本,一般都是指向最新的版本。非官方镜像必须要带上${repository_name},非docker-hub镜像必须带上 ${registry_name}/${repository_name}。