从开发到部署——docker浅体验

听说docker很diao?我们来调戏一下它吧~

到底什么是docker呢?

如果github做的是代码管理的工作,那么docker做的就是环境管理的工作。

Docker是一种虚拟化技术,下面是docker和虚拟机的的差别(右边是docker)

 

对比虚拟机与Docker

“Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源”(百度的)

 

好的好的,道理我都懂,但是他能帮我解决什么问题呢?

使用前:每次拿到新的linux服务器就是配置环境,安装依赖,代码部署,就很烦!

使用后:不管什么linux服务器,sudo docker pull your-image搞定一切,一劳永逸!

哇那不就很棒棒啊?

接下来就是带大家走一遍流程啦,教大家怎么基于一个已有的lamp镜像建立一个自己的镜像并且发布

前期准备:

1.操作系统:window 10

2.安装docker并且注册docker帐号 官网:http://www.docker.com

3.一个实验项目(这边用一个之前写的辣鸡mvc)https://github.com/kingkun233/KinPHP

4.一个ubuntu虚拟机(用作服务器)

 

开始之前要讲三样东西

1.镜像

2.容器

3.仓库

这三样是我们在使用容器是最常接触到的东东;

 

上面这张图是三者之间的关系,看不懂不要紧,打个比方,用面向对象来理解的话,镜像就是类,容器就是对象,仓库就类似于github,这里是dockerhub。这样应该好理解很多吧!通过下面的实践相信会加深你们的理解。

 

第一步:

在docker官网注册帐号

 

 

第二步:

下载docker并且安装

 

安装成功后会有这两个图标

 

打开下面那个出现下图就说明安装成功了

 

第三步:

拉取别人已经做好的lamp环境,这里推荐tutum做的lamp镜像

 

查看你本地有哪些镜像

 

第五步:根据镜像建立容器

 

查看正在运行的容器

 

第六步:在浏览器测试

在终端的开始的地方会有ip地址(这个针对window开发用的,ubuntu的话就直接回环测试)

 

如果出现如下界面说明容器正常运行啦~~

 

 

 

唉?怎么把项目代码放到容器里面啊?其实也很简单

 

在建立容器的时候加上 -v /c/Users/Kingkun/project/KinPHP:/app/KinPHP,其中冒号前面的是本地地址,后者是容器里面的地址,这样就把本地代码目录和容器目录挂载在一起了。(注意,在window下只能挂c盘不能挂d盘)

挂载之后我们来测试一下

 

唉?有个sql报错?原来是容器里的mysql刚刚新鲜出炉,还没有密码。

 

第七步:进入容器给mysql设置密码

用exec命令就可以调出终端啦~

 

Tutum/lamp镜像的linux用的是ubuntu14.04,但是已经把用户默认设为root了,所以命令都不用加sudo了~

默认mysql的root账户的不用密码登录的

进入mysql:

 

修改mysql的root密码

 

这样就修改好了

下面是我项目的数据库连接设置

 

再来看看

 

提示没有kinPHP数据库,说明已经连接上了,只是现在的mysql so fresh,没有数据库,好我们就给他加一个

 

再看

 

successed

 

第八步:安装phpmyadmin

常规的apt-get update走一下

apt-get install phpmyadmin

ln -s /usr/shared/phpmyadmin /var/www/html(软连接去网站根目录)

看一下

 

successed

 

第九步:发布镜像(包含phpmyadmin的镜像)

先登录docker账户

 

根据容器构建镜像

 

看到commit是不是想到什么啊

没错,和github非常像

然后发布到dockerhub仓库

 

在dockerhub上面看看

 

successed

 

第10步:在服务端拉取自己的镜像进行测试

这里用虚拟机做服务器

 

查看ip地址

 

Ubuntu上安装docker也是很简单,apt-get update&&apt-get install docker.io

首先拉取我们已经做好的镜像

 

然后把github上的项目拉下来

 

根据镜像创建容器并且和clone下来的项目目录进行挂载

 

用本地浏览器测试

 

phpmyadmin也有了,这是在tutum/lamp没有的,也就是说我们配置的环境上传成功了

再来看看项目KinPHP是否能运行

 

黑人问号.jpg?发现我们mysql的root是没有密码的,可是我们刚刚不是在本地已经配置了吗?百度到的答案如下

 

还是举个面向对象的例子,文章上面说过,镜像就像是一个类,你可以为这个类添加一属性(例如phpmyadmin),但是这个属性的值是不会添加到类里面的!由于服务器端的容器是一个“新的对象”,所以mysql现在是全新的,我们设置root密码和添加数据库的操作都没掉了(个人理解,欢迎指正)。那有没有解决的方法呢?问题总是能解决的。

方法一:再次设置密码和添加数据库;

方法二:如上面回答,与本地目录进行挂载;

方法三:写shell(这个的话感兴趣的可以去看一下dockerfile,是除了commit之外另外一种非常灵活的构建镜像的方法,这里就不细说);

我用的是第一种方法,因为懒。。。

好的,当我再次配置好了mysql密码和建立好数据库之后再看看

 

这样我们就走了一遍用docker从本地开发到远端部署的过程了

思考:我们是不是真的需要docker?

Docker真的能提高我们的工作效率吗?我觉得要看情况,如果是一个小项目的话,用docker的必要并不大,毕竟学习成本就放在这里;不过如果是大型项目(以后会不断扩展功能和强调性能),docker就很棒棒了。至于更加深入的东西就要你们自己探索啦,毕竟我看了两三天而已,溜了溜了

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值