Docker

作者: Yvette14 | 来源:发表于2016-10-11 12:37 被阅读0次
    什么是docker

    Docker is the world's leading software containerization platform.
    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。


    为什么要用docker
    举个栗子

    假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来运维一个网站。

    传统做法:
    1. 需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;
    2. 分别对它们进行配置(包括创建合适的用户、配置参数等);
    3. 之后需要进行功能测试,看是否工作正常,如果不正常,意味着更多的时间代价和不可控的风险。

    如果再加上更多的应用,事情会变得更加难以处理,而且一旦需要服务器迁移(例如从阿里云迁移到腾讯云),则需要重新部署和调试。大大地降低了工作效率

    Docker:
    1. 通过容器来打包应用
    2. 迁移只需要在新的服务器上启动需要的容器就可以了

    docker节约了大量的宝贵时间,并降低部署过程出现问题的风险


    Docker与传统虚拟机对比
    Docker容器与传统虚拟机对比
    Docker有以下几个优点:
    • 更快速的交付和部署
    • 更高效的虚拟化
    • 更轻松的迁移和扩展
    • 更简单的管理

    Docker基本概念
    • 镜像(Image)
      类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统
    • 容器(Container)
      类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用
    • 仓库(Repository)
      类似于代码仓库,是Docker集中存放镜像文件的场所。
      注:Docker利用仓库管理镜像的设计理念与Git非常相似

    仓库、镜像、容器之间的关系
    • 镜像是创建Docker容器的基础,容器是从镜像创建的应用运行实例,镜像自身是只读的,容器镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身保持不变;
    • 仓库是Docker集中存放镜像文件的场所。

    在使用docker命令的时候总要加上sudo,以下三句代码可以解决这个问题。

    $sudo groupadd docker
    #将当前用户加入docker组
    $sudo gpasswd -a ${USER} docker
    #重启docker服务
    $sudo service docker restart
    

    镜像操作常用命令

    镜像是只读的

    • docker pull NAME[:TAG]从网上下载镜像
    • docker images列出本地主机上已有的镜像
    • docker rmi IMAGE[IMAGE...]删除镜像,其中IMAGE可以为TAG或ID
      注意:若该镜像创建的容器存在,镜像文件无法删除,必须删除该镜像创建的容器后,才可以删除该镜像

    容器操作常用命令
    • docker create新建一个容器
    • docker ps查看容器
    • docker start启动容器
    • docker run新建并启动一个容器
    • docker stop终止容器
    • docker restart重启容器
    • docker exec进入容器操作
    • docker rm删除处于终止状态的容器
    • 参数
      • -t让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
      • -i让容器的标准输入保持打开
      • -d让容器在后台以守护态(Daemonized)形式运行

    相关文章

      网友评论

          本文标题:Docker

          本文链接:https://www.haomeiwen.com/subject/aeweyttx.html