docker学习
docker官网:https://docs.docker.com/
docker中文社区:http://www.docker.org.cn
docker解决问题:
1、开发环境与运维环境不一致,导致开发环境正常运行,而生产环境运行异常。环境指的是JDK、数据库、redis等。
2、生产环境机器多,发布耗时
docker的目标:build,ship and run any app,anywhere
一个构造封装,到处运行。any app指的是各种应用,如后台应用、Redis、MySQL等
docker与传统VM的区别,运行快docker秒级,传统VM需要1分钟。
VM中有GuestOS而容器中没有
传统的虚拟技术,在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。
而Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上。
Docker中的基本概念
镜像:镜像就像一套环境
容器:容器是镜像的实例,通过镜像可以快速创建容器
仓库:镜像保存在仓库中
数据卷:数据卷就是数据(一个文件或者文件夹)。
Docker的理念之一是将应用与其运行的环境打包,docker容器的生命周期是与其运行的程序一致的,而对数据的要求是持久化,docker容器之间也需要有共享数据的渠道。
数据卷是特殊的目录,可以绕过联合文件系统,为一个或多个容器提供访问。数据卷设计的目的是数据的永久化,是完全独立于容器的生命周期,不会在容器删除时删除其挂载的数据卷,也不会存在类似垃圾收集机制,对容器引用的数据卷进行处理。
数据卷存在于宿主机中,独立于容器,和容器的生命周期是分离的,数据卷存在于宿主机的文件系统中,数据卷可以目录也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现了容器间的数据共享和交换。
数据卷的特点:
1.容器启动的时候初始化的,如果容器使用的镜像包含了数据,这些数据也会拷贝到数据卷中。
2.容器对数据卷的修改是及时进行的。
3.数据卷的变化不会影响镜像的更新。数据卷是独立于联合文件系统,镜像是基于联合文件系统。镜像与数据卷之间不会有相互影响。
4.数据卷是宿主机中的一个目录,与容器生命周期隔离。
Docker常用命令
docker images:镜像列表
docker search:在仓库中查找镜像
docker pull:从仓库中摘取镜像
docker rmi:删除镜像
docker create:从镜像创建容器
docker run:从镜像创建容器并启动
docker start|stop|restart:启动/停止/重启容器
docker ps:查找容器
docker rm:删除容器
docker commit:根据容器创建镜像