一般咱们在开发环境写好代码,打个war/jar包,扔到tomcat下,就算是跑起来了;
可是扔到生产环境就挂了,what?各类错误。。。mysql
两个应用运行在一个服务器上,好比一个PHP,一个.NET。
这两个应用各类的依赖软件都安装在同一个服务器上,可能就会形成各类冲突/没法兼容,这可能调试就很是麻烦了。linux
docker 就是为解决上方问题出现的,一次封装,处处运行。
Linux 容器技术的出现解决了这样的一个问题,而 docker 就是在他的基础上发展过来的。
将应用运行在 docker 容器上面,而docker 容器在任何操做系统上都是一致的,实现了跨平台、跨服务器。nginx
只须要一次配置好环境,切换别的机子上就能够一键部署好,大大简化了操做。redis
假设:开发环境装了个 redis 3.2 ,运维环境装了 4.2,但是 3.2 运行没问题,可是在 4.2 就很差用了,可是既然开发环境装了 redis 3.2 了,运维就不必重复装了,开发把 redis 打个镜像,而运维只须要装个 docker 环境,而后把镜像一键部署便可。
放在之前,咱们只须要把代码扔给运维,让他去装软件,装很差就启动不了。sql
话外语:个人好朋友昆少,做为一个运维,每次都要陪开发加班上线项目,并且每每有些时候居然是环境引发的,毕竟开发本地用的 windows 环境,部署到 linux 就…docker
一句话概述:解决了运行环境和配置问题软件容器,方便作持续集成并有助于总体发布的容器虚拟化技术。数据库
资源占用多(特别吃内存)、冗余步骤多、启动慢;
虚拟机是一个连硬件都模拟的,好比打印机等等,是分钟级别的,而 docker 是秒级别的windows
因为前面的虚拟器存在这些缺点,linux 发展处另外一种虚拟化技术—linux 容器;
不是模拟一个完整的操做系统,而是对进程进行隔离。
有了容器,能够将软件运行所须要的资源打包一个隔离的容器中,容器与虚拟机不一样,不须要捆绑一整套操做系统,只须要软件工做
所需的库资源可设置。centos
docker 和传统虚拟化方式的不一样之处:tomcat
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操做系统,在该系统上再运行所须要应用进程。
- 容器的应用进程直接运行于宿主的内核,容器没有本身的内核,并且也没有进行硬件虚拟,所以容器更轻便。
- 每一个容器之间互相隔离,容器有本身的文件系统,容器之间进程不会互相影响,能区分计算资源。
一次构建、随处运行
更快应用交付和部署、更快升级和扩缩容、更简单的系统运维、更搞笑的计算资源利用
新浪、美团、阿里、京东等
docker.com docker-cn.com
官网?no!
连接:https://pan.baidu.com/s/1c20sYm0ziaRyUsotbp0oOg 提取码:o2m6
连接:https://pan.baidu.com/s/1KwJM_mes51cvl0e0kava5Q 提取码:n34r
解压镜像后,直接执行 vmx 后缀的文件。
systemctl start docker
mysql
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7
--name=数据库名称
-p 3306:3306 端口号
MYSQL_ROOT_PASSWORD=密码
nginx
docker run -p 80:80 --name ngx_demo -d nginx
-p 80:80:将容器的80端口映射到主机的80端口
--name mynginx:将容器命名为mynginx
查看全部的容器:docker images
若是文章有错的地方欢迎指正,你们互相留言交流。习惯在微信看技术文章,想要获取更多的Java资源的同窗,能够关注微信公众号:niceyoo