最近这个docker容器很火。好多牛逼的公司拿它来布置各样的环境啊,布置分布式啊等等。当然,作为码畜的我,玩的没其它人高级。正好公司要求线上环境要跟自己的开发环境保持一致,我就用上了docker

什么是Docker

根据百度百科的定义:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。其实docker就是一个容器的概念,这个容器可以运行各种镜像。比如你线上的环境是lnmp,你可以打包成一个docker镜像,你自己做负载或者要求多台服务器环境一样的时候,每台装个docker。然后run同样的镜像,那么就能保持各个环境的一致。而且你一台服务器可以跑多个镜像哦。

Docker的安装

Docker的安装也很简单,我们打开docker官网。官网有介绍docker的安装。我简单的来说明一下吧。如果你的电脑是Windows操作系统,最好升级到win10,docker在不是win10专业版或者企业版的电脑上也可以跑,不过这时候你是没法安装docker for windows的,这时候,docker是要在virtualbox运行的。也就相当于你Windows开了个虚拟机来跑docker.我上述讲的那两个版本的Windows能跑docker是因为win10自带虚拟机——Hyper-V。所以能运行docker.至于在linux下的安装,我主要用的Centos,你要想安装docker,你得把你的linux内核升到3以上。大部分人用的都是Centos6.5.他的内核是基于linux2.6的。如果你用的是Centos7.那你什么都不用管,可以直接安装,如果用的是6.5的,你可以选择换成7或者你可以在不升级操作系统,只升级它的内核。至于具体怎么升级,这里不展开讲,我有空也会在我的博客更新的。其实百度下有很多,只不过都是良莠不齐。具体的安装过程很简单,只要你满足我上述讲的条件的机子,因为比较穷,玩不起mac,没在mac下安装过,基本上几分钟就安装好了。docker安装过程

运行docker容器

安装好Docker后,我们得有个镜像才能让容器跑起来(Windows下直接打开cmd命令行)。首先我们先登录一个docker仓库:

1
docker login --username=xxxxx

然后根据提示输入密码,登录成功。然后

1
docker pull 镜像名称:镜像tag

阿里云有免费的docker仓库,我就拿来用了。然后你需要做的就是等待镜像下载好。下载好后,我们可以通过

1
docker images -a

查看已经下载的镜像。如果你直接docker pull的话,应该是从dockerhub上载公共镜像的
docker_pulll

这就是我下载好的镜像。我们怎么把它跑起来呢?

1
docker run -itd --name work  -p  80:80  -v d:/work/:/dockerdata/www/ registry.cn-hangzhou.aliyuncs.com/hsn/lnmp:160930

我主要讲下几个重要的参数 –name是指你要跑起来容器的名字,-p是端口映射的意思,就是把本机的80端口映射到虚拟机里面的80端口,-v是绑定目录的意思,就是把你本机的目录绑定到docker容器里面。后面跟的就是你的镜像。run好我们的容器之后,我们开始进入容器

1
docker attach 你run的容器名字

或者

1
docker exec -it  你run的容器名字 /bin/bash

这时候我们就进入了我们run起来的容器了。attach进去的话你开多个终端会有点问题这里推荐使用exec
更多docker run参数说明参考

在docker容器里面跑项目

因为我刚才在我把本机的80端口映射到docker容器的80端口。我在容器里面有nginx。所以我只要这样配置就能跑起nginx服务。

1
2
3
4
listen 80;
server_name book.work.dev;(自己定的域名)
index index.html index.htm index.php default.html default.htm default.php;
root /dockerdata/www/book/public;(容器里面项目的入口,对应的就是我挂载的D:/work/book/public)

自己本机的host这样改

1
192.168.10.207  book.work.dev(host域名指向本机的ip,不走公网的dns)

上传镜像到自己的仓库

比如有时候我们装了个redis啊,装了个mongodb啊,我们想下次使用的时候容器还会有这些东西。也简单的,我这里以阿里云的docker仓库为例。登录阿里云docker仓库.然后创建个本地镜像仓库。然后

1
2
3
docker login --username=xxxxx registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/hsn/test:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/hsn/test:[镜像版本号]

docker_push
每次给你的容器打个tag就能推送到阿里云的docker仓库了。