• Docker入门


    什么是Docker

    Docker是一个为开发人员和系统管理员提供的分布式应用程序的开放平台。

    本质来说,Docker是一个基于容器技术的系统。如果你熟悉虚拟服务的概念,那么,Docker为你的应用程序提供更高层级的抽象服务。

    Docker作为一个内部项目,发起于一个叫做“dotCloud”的托管公司。但是,早在2013年,就被公布了源代码。从那时起,Docker得益于超过15000次软件的提交,以及超过900名贡献者而逐渐壮大。

    为什么使用Docker?

    它启动很快。 启动一个Docker容器只需50毫秒。没有看错,是真的这么快。这就是使用高层级抽象的好处,这样减少了你所需运行的组件的数量。这也意味着,在它执行的过程中几乎没有额外的开销。

    一键(单命令)部署。 它是真的简单到安装一个应用只需输入一行命令。想要安装MySQL?一行命令。想到一下子把WordPress, MySQL, Nginx and Memcache全部安装并且配置完成?还是一行命令。

    预配置应用。 在上一次统计中,有超过13000个应用已经打包成了Docker镜像。这样的话,如果你正在使用一个通用的应用,则大部分的初始化工作都应经为你事先做好了。还不止这样,你还可以再得到应用镜像之后,进行个性化的修改,再重新部署到你专属的资源库里。

    资源隔离。 在过去,如果你想运行所有的服务在同一台服务器上,这可能会耗尽服务器的所有资源。Docker允许你基于各自应用或服务,进行设置、监听、调整。

    一致性。 Docker是那种“一次配置各处部署”的环境。它去除了所有从开发环境向生产环境迁移的琐事。每一组类库都跟他的docker镜像紧密结合,来确保一致性。

    一个完整的平台。 Docker正逐渐发展成为一个提供完整功能的平台,而不局限于功能单一的工具。包括:Base Engine,容器的基础引擎;Compose,整合编排复杂的部署;Swarm,用以管理Docker集群;Machine,负责供给。这就是Docker区别于其他容器类型工具的地方,你可以非常轻松地管理系统的整个生命周期。

    扩展性。 这也是Docker很亮眼的特性之一,特别是,如果你的项目是基于微服务的。Compose and Swarm用来部署可扩展的应用系统,加上Kubernetes、Mesos等第三方应用,这两方面使服务器的扩展性提高到了更高的层级。我们这里在讨论的“管理整个生命周期”是基于多达数百万级数量的容器的管理能力,所以说,扩展性不会是问题!扩展性。这也是Docker很亮眼的特性之一,特别是,如果你的项目是基于微服务的。Compose and Swarm用来部署可扩展的应用系统,加上Kubernetes、Mesos等第三方应用,这两方面使服务器的扩展性提高到了更高的层级。我们这里在讨论的“管理整个生命周期”是基于多达数百万级数量的容器的管理能力,所以说,扩展性不会是问题!

    Docker通常用于如下场景

    • web应用的自动化打包和发布;
    • 自动化测试和持续集成、发布;
    • 在服务型环境中部署和调整数据库或其他的后台应用;
    • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

    安装Docker

    CentOS 6.5以上版本

    安装EPEL

    rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
    yum -y install yum -priorities
    

    安装Docker

    yum install docker-io
    service docker start
    chkconfig docker on
    

    CentOS 7

    yum install docker
    systemctl start docker.service
    systemctl enable docker.service
    

    脚本安装

    wget -qO- https://get.docker.com/ | sh
    

    Hello World

    Docker允许在容器内执行命令,使用docker run命令在容器内运行一个应用程序。

    docker run ubuntu:15.10 /bin/echo "Hello world"
    

    命令行会显示:Hello world

    各个参数解析:

    • docker: Docker的二进制执行文件
    • run: 与前面的docker组合来运行一个容器
    • ubuntu:15.10:指定要运行的容器,Docker会首先检查本机是否有此镜像,否则会从docker hub镜像库里下载对应镜像
    • /bin/echo "Hello world": 在启动的容器里执行的命令

    运行交互式容器

    通过添加 -i -t,让docker容器实现“对话”的能力

    root@localhost:~$ docker run -i -t ubuntu:15.10 /bin/bash
    root@dc0050c79503:/#
    

    各个参数解析:

    • -t: 在新容器内指定一个伪终端或终端。
    • -i: 允许你对容器内的标准输入 (STDIN) 进行交互。

    启动容器(后台运行)

    使用以下命令创建一个以进程方式运行的容器

    root@localhost:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
    

    在输出中,我们没有看到期望的"hello world",而是一串长字符

    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
    

    这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

    通过 docker ps 来查看容器的运行状态

    停止容器

    停止容器的命令:docker stop [container_id]

  • 相关阅读:
    写了这么久前端,你知道浏览器原理吗?
    史上最全的web前端开发程序员学习清单!
    常见前端面试题及答案
    “下辈子再也不当程序员了,我被黑够了”
    什么是web前端,全栈工程师就业前景怎么样?
    要嫁就嫁程序员,钱多话少死得早!
    想转行做web前端工程师,必学这6大技能
    测试用例设计总结
    python读取一个英文文件,并记录每个单词出现的次数,降序输出
    python读取一个文件的每一行判断是否为素数,并把结果写到另一个文件中
  • 原文地址:https://www.cnblogs.com/yfalcon/p/9041527.html
Copyright © 2020-2023  润新知