Docker 使用心得以及部署一个Mysql container
最近公司在使用Docker,确实是一个很好用的东西,就像集装箱一样,一层一层的堆叠,操作简单,实用性强,性能也特别好,玩法有很多,可以结合自己项目的实际情况来定制。
安装 Docker
方法可以在官网上看,www.docker.com
在Ubuntu 14.x 以上版本是无缝安装:
$ which curl $ sudo apt-get update $ sudo apt-get install curl (如果有了curl忽略上面的3步) $ curl -fsSL https://get.docker.com/ | sh
完成后,docker 就安装完成了,打 sudo docker version
就可以查看当前的docker的版本号。
Mac 和 Windows的安装有点小麻烦,需要安装官方的 Docker Toolboxhttps://www.docker.com/products/docker-toolbox 实际上就是一个虚拟机,然后在虚拟机中运行Ubuntu来安装Docker。
下载Mysql的image
Mysql 可以从官方的dockerhub上去pull,也可以使用aliyun的加速服务,速度确实快不少,docker 自己的registry是假设在AWS上的,而AWS国内的访问速度简直不能忍。
docker pull mysql:5.5
docker images
命令就可以看到你当前的docker都下载了哪些image。开始运行这个container
image:映象,以这个mysql的image为例,可以理解成一个虚拟机装好了mysql服务,可以通过docker images
命令查看
container:容器,image 启动后就是 container,可以停止和启动,但是删除后就没有了,可以通过docker ps
查看当前运行的所有 container
因为container是无法保存数据的,随用随丢的,删除就没有了,所以不适合把数据保存在container上,所以我们把mysql的服务跑在container中,数据呢,存放在宿主机器中。
注意:以下的方案可能不适合在 Mac 和 Windows 上实施,至少是在 Mac 上不行的,我试过,会因为宿主机器的 mysql 用户和
container 中的 mysql 用户不一致而无法实现
在宿主机器上建立一个文件夹,用来存在 mysql 的 data (数据目录),如/home/tom/mysqldata
,然后运行这个image,启动container
docker run --name db -e MYSQL_ROOT_PASSWORD=root -d -v /home/tom/mysqldata:/var/lib/mysql/bluemountain mysql:5.6 --lower_case_table_name=1
参数解释:
--name
指定 container 的名字,这里叫 db-e
指定 container 中 mysql 的 root 用户密码-v
目录挂载,就是把我们自己建立的数据目录,挂载到 container 中 mysql 的数据目录,这样数据就写到宿主机器了--lower_case_table_name=1
指定 mysql 的一些配置
启动完成后,打docker ps
命令,就可以看到当前运行的所有 container
使用这个 container
到这里为止,mysql 的 container 就启动完成了,但是别的程序的 container 怎么用呢?其实很简单,在启动其他 container 的时候,绑定这个 container 就行。
dk run --name bm -d --link db:db bluemountain
--link db:db1
就表示当前运行的 container 中可以使用 db1
这个名字访问名为db
的container
如果有错误,希望得到指正.
doen.