• 开箱一个docker


    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

  • 相关阅读:
    记一次dba面试
    MySQL登陆 socket 问题
    推荐一些MySQL的博文(持续更新)
    MySQL 参数调优工具--tuning-primer
    当扫描的数据超过了全表的17%就不使用索引
    MySQL 5.7 新增参数
    MySQL 5.7 和 MySQL 5.6参数默认值比较
    MySQL创建的用户无法从本地登陆
    含有IN的子查询
    索引大小对语句执行速度的影响
  • 原文地址:https://www.cnblogs.com/niceyoo/p/10822565.html
Copyright © 2020-2023  润新知