1、docker 的出现?

1.1、环境切换配置麻烦

通常我们在开发环境写好代码,打个war/jar包,扔到tomcat下,就算是跑起来了;
但是扔到生产环境就挂了,what?各种错误。。。

1.2、应用之间需要隔离

两个应用运行在一个服务器上,比如一个PHP,一个.NET。
这两个应用各种的依赖软件都安装在同一个服务器上,可能就会造成各种冲突/无法兼容,这可能调试就非常麻烦了。

docker 就是为解决上方问题出现的,一次封装,到处运行。
Linux 容器技术的出现解决了这样的一个问题,而 docker 就是在他的基础上发展过来的。
将应用运行在 docker 容器上面,而docker 容器在任何操作系统上都是一致的,实现了跨平台、跨服务器。

只需要一次配置好环境,切换别的机子上就可以一键部署好,大大简化了操作。

假设:开发环境装了个 redis 3.2 ,运维环境装了 4.2,可是 3.2 运行没问题,但是在 4.2 就不好用了,但是既然开发环境装了 redis 3.2 了,运维就没必要重复装了,开发把 redis 打个镜像,而运维只需要装个 docker 环境,然后把镜像一键部署即可。
放在以前,我们只需要把代码扔给运维,让他去装软件,装不好就启动不了。

话外语:我的好朋友昆少,作为一个运维,每次都要陪开发加班上线项目,而且往往有些时候竟然是环境引起的,毕竟开发本地用的 windows 环境,部署到 linux 就…

一句话概述:解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

2、能干吗?

2.1、之前的虚拟机技术:

资源占用多(特别吃内存)、冗余步骤多、启动慢;
虚拟机是一个连硬件都模拟的,比如打印机等等,是分钟级别的,而 docker 是秒级别的

2.2、容器虚拟化技术:

由于前面的虚拟器存在这些缺点,linux 发展处另一种虚拟化技术—linux 容器;
不是模拟一个完整的操作系统,而是对进程进行隔离。
有了容器,可以将软件运行所需要的资源打包一个隔离的容器中,容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作
所需的库资源可设置。

docker 和传统虚拟化方式的不同之处:

  1. 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需要应用进程。
  2. 容器的应用进程直接运行于宿主的内核,容器没有自己的内核,而且也没有进行硬件虚拟,因此容器更轻便。
  3. 每个容器之间互相隔离,容器有自己的文件系统,容器之间进程不会互相影响,能区分计算资源。
2.3、开发/运维

一次构建、随处运行
更快应用交付和部署、更快升级和扩缩容、更简单的系统运维、更搞笑的计算资源利用

2.4、企业级

新浪、美团、阿里、京东等

3、去哪下?怎么装?

docker.com docker-cn.com

官网?no!

3.1、安装VM

链接:https://pan.baidu.com/s/1c20sYm0ziaRyUsotbp0oOg 提取码:o2m6

3.2、添加docker

链接:https://pan.baidu.com/s/1KwJM_mes51cvl0e0kava5Q 提取码:n34r
解压镜像后,直接执行 vmx 后缀的文件。


点击后,vm 会检测到运行文件类型,自行添加到 “我的计算机”列表:

执行“开启此虚拟机”:

注意:需要在服务里开启 DHCP 服务,该服务用于自动分配 ip,开启该服务才能给虚拟机分配网络

用户名:root 密码:itcast

3.4、docker 启动容器

systemctl start docker

3.5、运行容器

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

3.6、部分指令

查看所有的容器:docker images


查看运行:docker ps -a

暂停容器:docker stop 容器id/容器名称

重新启动某一个容器:docker start 容器id/容器名称

如果文章有错的地方欢迎指正,大家互相留言交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:niceyoo

开箱一个docker的更多相关文章

  1. 给Ocelot做一个Docker 镜像

    写在前面 在微服务架构中,ApiGateway起到了承前启后,不仅可以根据客户端进行分类,也可以根据功能业务进行分类,而且对于服务调用服务也起到了很好的接口作用.目前在各个云端中,基本上都提供了Api ...

  2. 一步步创建第一个Docker App —— 2. 创建 Docker化 主机

    原文:https://docs.docker.com/engine/getstarted-voting-app/node-setup/ 部署voting app的第一步,是为集群节点(swarm no ...

  3. .net core 下的一个docker hello world

    接触 docker 有段时间了,发现docker这个东西,真是越用越爽. 那就从零开始跑一个 docker simple . 方法一: 步骤一: dotnet new mvc --name myweb ...

  4. Docker | 第二章:第一个Docker应用

    前言 上一章节,已经简单讲解了Docker相关方面的知识,相信大家已经有个概念了.这章节开始,开始进行实践操作.和学习任何一门语言一样,我们今天也开始从Hello,World开始~ 对Docker不了 ...

  5. 年轻人的第一个 Docker 应用,大大提高生产力!

    上一篇:年轻人的第一个 Spring Boot 应用! 哈哈,标题我抄了雷总的,不重要哦,重要的是 Docker 真的很年轻,虽然现在才不到 8 岁,但却是个冉冉升起的巨星,火得一塌糊涂. 这几年 D ...

  6. windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互)

    前言 小白直接上手 docker  构建我们的第一个项目,简单粗暴,后续各种概念边写边了解,各种概念性的内容就不展开,没了解过的点击 Docker 教程 进行初步了解. Docker 是一个开源的应用 ...

  7. 使用nexus搭建一个docker私服

    使用nexus搭建docker私服 一.需求: 二.实现步骤 1.编写`docker-compose`文件,实现`nexus`的部署 2.修改/usr/lib/systemd/system/docke ...

  8. centos7 搭建docker内运行rabbitmq,然后再镜像ha方案的完全教程,暂时一个宿主机只能运行一个docker的rabbitmq,但是集群 ha都正常

    1.安装centos7.x,配置好网络2.因为docker需要比较高版本的内核,比如使用overlayfs作为默认docker文件系统要3.18,所以先升级内核到3.18以上版本,能直接过4是最佳了检 ...

  9. 写一个 docker 打击一系列手册

    感谢您的关注,分享也再次给自己一个学习的.机会组织和总结.对未来一段时间内准备一个关于 docker 一系列的实际应用,其中的一些内容此前曾宣布.准备再次修改和整理. 以下是主要的文件夹中的一个: 创 ...

随机推荐

  1. 资源对象的池化, java极简实现,close资源时,自动回收

    https://www.cnblogs.com/piepie/p/10498953.html 在java程序中对于资源,例如数据库连接,这类不能并行共享的资源对象,一般采用资源池的方式进行管理. 资源 ...

  2. CORS解决跨域问题(403问题)

    1.什么是跨域问题? 跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是用当前页同域名同端口的路径,这能有效的阻止跨站攻击. 2.跨域问题出现的条件: 1.跨域问题是a ...

  3. MySQL表关系--外键

    一.外键前戏 如果我们把所有的信息都记录在一张表中会带来的问题: 1.表的结构不清晰 2.浪费磁盘空间 3.表的扩展性极差 所以我们要把这种表拆成几张不同的表,分析表与表之间的关系. 确定表与表之间的 ...

  4. 1139 First Contact PAT (Advanced Level)

    原题链接: https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312 测试点分析: 首先来分析一下测试 ...

  5. coco2dx--Permission denied

    在终端输入./cocos.py....创建项目时,出现Permission denied,是权限问题,可以先使用chmod命令获得权限,输入chmod u+x ./cocos.py 回车,接着再使用c ...

  6. 基于Spark2.X系列的累加器和Streaming基础

    一.累加器API 关于累加器,前面我也写了一篇博客,顺便粘贴这儿,对比学习,Spark学习之编程进阶总结(一).Spark 2.0系列引入了一个更加简单和更高性能的累加器API,如在1.X版本中可以这 ...

  7. matplotlib 中文乱码问题

    matplotlib是Python著名的绘图库,默认并不支持中文显示,因此在不经过修改的情况下,无法正确显示中文. 本文将介绍解决这一问题的方法. 不修改文件,加两行代码即可: matplotlib. ...

  8. CF1109F Sasha and Algorithm of Silence's Sounds LCT、线段树

    传送门 构成一棵树可以分成两个限制:图不成环.图的点数-边数=1. 我们考虑枚举右端点\(r\)计算所有可能的左端点\(l\)的答案.我们先考虑第一个限制:图不成环.注意到当\(r\)确定的时候,满足 ...

  9. Python调用Matlab2014b引擎

    用惯Python的你,是不是早已无法忍受matplotlib那丑陋无比的图以及蛋疼无比部署依赖? 当当当当,Matlab2014b的Python Engine API现已加入豪华午餐. 上次写了一篇文 ...

  10. 【leetcode-78 dfs+回溯】 子集

    子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1],   ...