docker是现在流行的组件容器,好处是能够方便的利用虚拟机构建开发环境及测试环境,并能够像git管理代码那样来管理镜像,降低开发人员在环境配置方面的开销。远景来看,现在的生产环境也基本都是基于虚拟机的公有云或私有云架构,非常方便在未来的某天升级到容器环境,做到开发环境与生产环境的完全一致,便于部署和发布。
简单的使用说明,帮助大家入门:
Docker安装
首先到www.virtualbox.org下载安装virtualbox,docker的虚拟机基于virtualbox,安装完不用启动和下载镜像,放在那里就行
再到www.docker.com下载最新版本的docker,安装完毕后有两个图标
Kitematic是图形界面,另一个是命令行界面
打开Kitematic,点击+NEW进入镜像市场,查找想要的镜像,比如redis等等。
点击CREATE下载镜像,首次下载的时间会比较长,需耐心等待。以后再下载其他镜像的时候就很快了。
对于像redis、memcache这样的服务,在图形界面配置下访问端口就可以run了,其实不配置端口也是可以run的,只不过每次会随机产生一个端口,略麻烦。它采用的是端口映射的机制,将容器服务的端口映射到主机的某个端口上,后续直接访问这个主机 IP:端口即可。
图形界面提供了几个基本功能,启动/停止、重启、登录命令行、访问镜像所在页面(类似github的页面)。登录命令行就像操作普通的linux是一样样的,也可以在里面安装各种程序
其实,大部分的容器首次运行没办法通过图形界面完成,必须使用命令行先完成配置。包括像redis、memcache这样的简单服务,如果想创建多个,就必须通过命令行了。这个要看具体镜像的说明文档。进入docker的命令行模式除了前面提到的应用,在图形界面的左下角“DOCKER CLI”也可以进入命令行
以mysql为例,启动命令如下:
docker run --name some-mysql -psome-port:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:lastest
[some-mysql]是给这个容器取一个名字,如果同时启动多个mysql的话,用名字区分还是很必要的
[some-port]是指定映射到主机的端口,以便在主机上能通过端口访问服务
[my-secret-pw]是指定root用户的密码
[mysql:lastest]是指定镜像和tag
以后再启动这个容器就可以在图形界面操作了。
解释下docker的两个基本概念,镜像(image)和容器(container)的关系。从市场上下载的叫镜像,可以看做是“类”,实例化以后就是容器,类似“对象”。一个镜像可以实例化出来多个容器。容器在经过各种配置、各种修改后,可以commit成一个本地镜像,方便后续扩展出多个近似功能的容器。同时,docker借用了git的概念来管理镜像,可以对镜像进行pull、push这样的操作
Docker是先有命令行后有的图形界面,目前的图形界面只能实现很小的一部分的功能。所以,要用好docker必须要花点时间学习一下它的命令行。具体的命令说明请咨询度娘。