在Docker系列一和二,已经安装好docker,并能启动、停止docker容器了,容器是属于Docker生命周期中的启动或执行阶段,在系列三就来了解下Docker生命周期的构建、打包阶段 – 镜像。
Docker镜像是由文件系统叠加而成的,其最底端是一个引导文件系统bootfs,位于bootfs之上的是root文件系统rootfs, 如Ubuntu系统或Centos系统。
Docker采用了一种写时复制(copy on write)的技术,加上镜像分层框架(image-layering framework),可以快速构建镜像并运行包含自己的应用程序和服务的容器。
列出本地Docker主机的可用镜像
命令:
docker images
这些是之前创建容器时,下载保存在本地宿主机的镜像。
查找Docker Hub上的公共可用镜像
命令:
docker search mysql
这个命令查找所有带有mysql的镜像,这些镜像已经可以运行mysql服务了,拉下来就可以运行使用的了。
现在拉取marvambass/mysql这个镜像到本地看看,这是一个基于Ubuntu14.04的Mysql Server:
基于这个镜像启动一个容器:
看看关于mysql文件的位置:
启动数据库service mysql start
,发现启动失败:
看了数据库的版本信息后,发现是使用apt软件包安装的方法安装的mysql:
在Ubuntu环境下,软件包通过apt-get install方式来安装的,当该软件包出现问题的时候,可以通过dpkg-reconfigure命令对原来的软件包进行修复:
dpkg-reconfigure mysql-server-5.5
– 注意: 这里的数据库版本要对应安装的版本
执行这个命令后,重新输入一下root的密码即可,完成后,再次启动数据库服务,成功:
注意:
在采用dpkg-reconfigure方式修复mysql后,会有这样一个问题,即mysql数据用户会丢失掉,所以,针对服务器上mysql的用户,还得作一次修复,可以通过以下命令来处理:
GRANT ALL PRIVILEGES ON db.* TO user@localhost IDENTIFIED BY “pass”;
这样就可以还原之前系统中的那些用户。
到这里,从Docker Hub搜索一个现有的镜像,到启动新容器,可以很快部署一个服务,而且,实现了开发环境和生产环境的一致。