精华内容
下载资源
问答
  • Docker有什么用

    千次阅读 2018-06-21 20:49:26
    Docker目前只能在Linux下运行 尝试新软件 对开发者而言,每天会催生出的各式各样的新技术都需要尝试,...Docker 一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。 并不仅仅是新技...

    Docker目前只能在Linux下运行

    尝试新软件

    对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。

    并不仅仅是新技术环境搭建用得到 Docker。如果你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如

    Docker 只需要一条命令便可以运行 MySQL 数据库:

    docker run -d -p 3306:3306 tutum/mysql。

    译者注:虽然使用命令也能非常快地安装 MySQL 数据库,但是当用到最新的技术或者非常复杂的技术时,使用 Docker 便会是个非常好的选择,例如 :

    事件 普通用户 Docker用户
    安装Gitlab 一天 一条命令

    进行演示

    现在我经常需要在周末用自己开发的成果对客户活着别人做一两个演示。搭建演示环境的过程非常麻烦。现在我发现 Docker 已经成为我演示这些工具的最合理的方式。

    对于客户来说,我可以直接将 Docker 镜像提供给他们,而不必去做任何环境配置的工作,工作的效果也会和在他们演示中所看到的一模一样,同时不必担心他们的环境配置会导致我们的产品无法运行。

    避免“我机器上可以运行”(而别人的机器不可以)

    无论是上一篇介绍的企业部署 Docker 还是本文的个人 Docker 用例,都提到了这个情况。因为环境配置不同,很多人在开发中也会遇到这个情况,甚至开发的软件到了测试人员的机器上便不能运行。但这都不是重点。重点是,如果我们有一个可靠的、可分发的标准开发环境,那么我们的开发将不会像现在这么痛苦。Docker 便可以解决这个问题。Docker 镜像并不会因为环境的变化而不能运行,也不会在不同的电脑上有不同的运行结果。可以给测试人员提交含有应用的 Docker 镜像,这样便不再会发生“在我机器上是可以运行的”这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。

    另一个 Docker 可以发挥用处的地方是培训班。除了 Docker 容器的隔离性之外,更能体会到 Docker 优势的地方在于环境搭建。培训班的新手每个人都要在环境搭建上花费很多时间,但是如果在这里应用到 Docker 的话,那么我们只需要把标准的运行环境镜像分发下去,然后就可以开始上课了。使用 Docker 和使用虚拟机一样简单,但是 Docker 要更方便、更轻量级。同时,我们也可以告诉学员:“在培训的同时,我们还将学到当下最流行的技术——Docker”,这种双赢的结局,何乐而不为呢。

    更好地利用资源

    虚拟机的粒度是“虚拟出的机器”,而 Docker 的粒度则是“被限制的应用”,相比较而言 Docker 的内存占用更少,更加轻量级。

    对我来说这是 Docker 的一个优势:因为我经常在自己电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。

    为微服务定制

    如果你一直在关注科技新闻的话,那么你应该听说过“微服务(Microservices)”的概念。Docker 可以很好地和微服务结合起来。从概念上来说,一个微服务便是一个提供一整套应用程序的部分功能,Docker 便可以在开发、测试和部署过程中一直充当微服务的容器。甚至生产环境也可以在 Docker 中部署微服务。

    在云服务提供商之间移植

    大多数的云主机提供商已经全面支持 Docker。对于开发人员来说,这表示你可以很方便地切换云服务提供商,当然也可以很方便地将你本地的开发环境移动到云主机上,不需要本地上配置一次运行环境、在云主机上还配置一次运行环境。全面部署 Docker (Docker here and Docker there) 作为标准运行环境可以极大地减轻应用上线时的工作量和产生 BUG。

    API 端

    API 是应用之间的粘合剂,一个合格开发者肯定使用过别人提供的 REST API,或者自己开发过 REST API。需要指出的是,无论是客户端还是 API 提供端,在开发之前都需要先定义一组公共的 API 接口,写成文档,然后才能进行编码。如果服务端和客户端是共同开发的话,那么服务端通常会先实现能返回固定字符串的 API 接口,在以后的开发中再慢慢去实现 API 的功能。

    虽然有人会认为在这里 Docker 被滥用了,完全可以用 sample.json 这种文件去实现虚拟 API,但是下面有个实例可以更好地解决前后端分离开发时的 API 问题。

    为了更好地解释我的意思,给大家提供一个实例:JSON Server,一个用于提供 JSON 数据的 REST API。使用过这个容器的人就会知道,既然有这么好用的 Docker JSON Server,我们没有理由不用 Docker。

    译者注:

    运行示例的 JSON Server,同时使用示例中提供的 JSON 文件,只需执行一条命令便可以创建一个服务端的 API 应用。
    使用 curl http://127.0.0.1:80/posts 即可获取示例文件中的 posts 段,这样在后端没有开发完 API 的时候,前端一样可以进行协同开发。

    技术的创新

    这点应该算不上是用例,但是我还是来写一下。Docker 正在快速发展,工具也在不断更新,没有人能预见到未来 Docker 会是什么样子的。你在复杂的系统中 Docker 使用的越多,越是可能会发现技术上的空白和未来技术发展的方向。现在还处在 Docker 的发展期,任何你使用 Docker 创建的工具都有可能成为社区关注的热点。这是 Docker 的机会,也是成就你自己的机会。

    其他

    还有两个技巧可以分享给你们。在学习 Docker 的过程中因为有了这两个的帮助,我才得意不断地提升自己。

    一:Docker Hub Registry。这是 Docker 的官方镜像仓库,除了托管着 Docker 官方的镜像外,和 Github 一样,你可以在上面上传自己的镜像,也可以在上面搜寻其他有用的镜像,极大地节省自己的时间。例如 Oracle-XE-11g 镜像,所有的一切都是现成的,完全不需要自己去下载 Oracle XE 11g 安装。这样为你和团队节约了大量的时间成本。

    如果你不太确定的话,可以去 Docker Hub 上搜有一下有没有自己用得到的镜像。大部分情况下你所需要的镜像在 Docker Hub 上都已经有人构建了。

    二:多参考 IaaS 供应商的新闻,虽然我们不能像在他们会议室里那样完全了解他们的公司动态,但是仍然可以从新闻中可以了解到 Docker 最新的发展方向和技术趋势。可以肯定的是,容器化技术是未来的热点,我们不仅可以在本机运行 Docker,不仅仅在一家云服务提供商的主机上运行 Docker,未来所有的云服务提供商都会支持 Docker。

    Docker 前景很明确,采用 Docker 只会让开发变得更方便。

    原文链接:dockone.io/article/378

    展开全文
  • Docker什么? Docker的思想来自于集箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船...

    Docker是什么?

    在这里插入图片描述
    Docker的思想来自于集箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。

    docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

    1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。

    2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。

    3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。

    总之docker就是集装箱原理。

    开发者可以使用Docker做什么?

    Docker 如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 离自己很远,Docker 是生产环境中的工具,和自己无关。我也是花了很长时间才想清楚作为普通开发人员如何在自己的开发中使用 Docker。

    在介绍用例之前,我希望你能先记住这句话:“Docker 是一个便携的应用容器”。你可以不知道 Docker 所说的的“便携式容器”到底是什么意思,但是你必须清楚 Docker 在日常中能带来非常大的效率提升。

    当你需要在容器内运行自己的应用(当然可以是任何应用),Docker 都提供了一个基础系统镜像作为运行应用时的基础系统。也就是说,只要是 Linux 系统上的应用都可以运行在 Docker 中。

    可以在 Docker 里面运行数据库吗?当然可以。
    可以在 Docker 里面运行 Node.js 网站服务器吗?当然可以。
    可以在 Docker 里面运行 API 服务器吗?当然可以。

    Docker 并不在乎你的应用程序是什么、做什么,Docker 提供了一组应用打包、传输和部署的方法,以便你能更好地在容器内运行任何应用。

    尝试新软件
    对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。

    并不仅仅是新技术环境搭建用得到 Docker。如果你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如 Docker 只需要一条命令便可以运行 MySQL 数据库:docker run -d -p 3306:3306 tutum/mysql。

    译者注:虽然使用命令也能非常快地安装 MySQL 数据库,但是当用到最新的技术或者非常复杂的技术时,使用 Docker 便会是个非常好的选择,例如 Gitlab,普通用户大概需要一天的时间去搭建 Gitlab 平台,而 Docker 则只需要一条命令。

    进行演示
    现在我经常需要在周末用自己开发的成果对客户活着别人做一两个演示。搭建演示环境的过程非常麻烦。现在我发现 Docker 已经成为我演示这些工具的最合理的方式。同时,对于客户来说,我可以直接将 Docker 镜像提供给他们,而不必去做任何环境配置的工作,工作的效果也会和在他们演示中所看到的一模一样,同时不必担心他们的环境配置会导致我们的产品无法运行。

    避免“我机器上可以运行”
    无论是上一篇介绍的企业部署 Docker 还是本文的个人 Docker 用例,都提到了这个情况。因为环境配置不同,很多人在开发中也会遇到这个情况,甚至开发的软件到了测试人员的机器上便不能运行。但这都不是重点。重点是,如果我们有一个可靠的、可分发的标准开发环境,那么我们的开发将不会像现在这么痛苦。Docker 便可以解决这个问题。Docker 镜像并不会因为环境的变化而不能运行,也不会在不同的电脑上有不同的运行结果。可以给测试人员提交含有应用的 Docker 镜像,这样便不再会发生“在我机器上是可以运行的”这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。

    另一个 Docker 可以发挥用处的地方是培训班。除了 Docker 容器的隔离性之外,更能体会到 Docker 优势的地方在于环境搭建。培训班的新手每个人都要在环境搭建上花费很多时间,但是如果在这里应用到 Docker 的话,那么我们只需要把标准的运行环境镜像分发下去,然后就可以开始上课了。使用 Docker 和使用虚拟机一样简单,但是 Docker 要更方便、更轻量级。同时,我们也可以告诉学员:“在培训的同时,我们还将学到当下最流行的技术——Docker”,这种双赢的结局,何乐而不为呢。

    学习 Linux 脚本
    当然这个原因看起来可能很奇怪,但是对不不熟悉 Linux 操作系统和 Shell 脚本的人来说,确实是一个好机会。即便本文并不是在讲 Linux,Linux 的重要度仍然不言而喻。如果你用的是 Windows,那么我给你一个建议:从云主机提供商那儿租用一台云主机:我推荐使用 CoreOS 系统的云主机。虽然这样并不会让你成为专业的 Linux 运维,但是可以让你快速地学到 Linux 基础知识,爱上命令行操作,并且慢慢开始熟悉和欣赏 Linux。

    更好地利用资源
    虚拟机的粒度是“虚拟出的机器”,而 Docker 的粒度则是“被限制的应用”,相比较而言 Docker 的内存占用更少,更加轻量级。

    对我来说这是 Docker 的一个优势:因为我经常在自己电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。

    为微服务定制
    如果你一直在关注科技新闻的话,那么你应该听说过“微服务(Microservices)”的概念。Docker 可以很好地和微服务结合起来。从概念上来说,一个微服务便是一个提供一整套应用程序的部分功能,Docker 便可以在开发、测试和部署过程中一直充当微服务的容器。甚至生产环境也可以在 Docker 中部署微服务。

    在云服务提供商之间移植
    大多数的云主机提供商已经全面支持 Docker。对于开发人员来说,这表示你可以很方便地切换云服务提供商,当然也可以很方便地将你本地的开发环境移动到云主机上,不需要本地上配置一次运行环境、在云主机上还配置一次运行环境。全面部署 Docker (Docker here and Docker there) 作为标准运行环境可以极大地减轻应用上线时的工作量和产生 BUG。

    API 端
    API 是应用之间的粘合剂,一个合格开发者肯定使用过别人提供的 REST API,或者自己开发过 REST API。需要指出的是,无论是客户端还是 API 提供端,在开发之前都需要先定义一组公共的 API 接口,写成文档,然后才能进行编码。如果服务端和客户端是共同开发的话,那么服务端通常会先实现能返回固定字符串的 API 接口,在以后的开发中再慢慢去实现 API 的功能。

    为了更好地解释我的意思,给大家提供一个实例:JSON Server,一个用于提供 JSON 数据的 REST API。使用过这个容器的人就会知道,既然有这么好用的 Docker JSON Server,我们没有理由不用 Docker。

    译者注:
    运行示例的 JSON Server,同时使用示例中提供的 JSON 文件,只需执行一条命令便可以创建一个服务端的 API 应用。
    使用 curl http://127.0.0.1:80/posts 即可获取示例文件中的 posts 段,这样在后端没有开发完 API 的时候,前端一样可以进行协同开发。

    技术的创新
    这点应该算不上是用例,但是我还是来写一下。Docker 正在快速发展,工具也在不断更新,没有人能预见到未来 Docker 会是什么样子的。你在复杂的系统中 Docker 使用的越多,越是可能会发现技术上的空白和未来技术发展的方向。现在还处在 Docker 的发展期,任何你使用 Docker 创建的工具都有可能成为社区关注的热点。这是 Docker 的机会,也是成就你自己的机会。

    其他:
    Docker Hub Registry。这是 Docker 的官方镜像仓库,除了托管着 Docker 官方的镜像外,和 Github 一样,可以在上面搜寻其他有用的镜像,你可以在上面上传自己的镜像,极大地节省自己的时间。例如 Oracle-XE-11g 镜像,所有的一切都是现成的,完全不需要自己去下载 Oracle XE 11g 安装。这样为你和团队节约了大量的时间成本

    如果你不太确定的话,可以去 Docker Hub 上搜有一下有没有自己用得到的镜像。大部分情况下你所需要的镜像在 Docker Hub 上都已经有人构建了。

    Docker 前景很明确,采用 Docker 只会让开发变得更方便。

    因为遇见你,生命才会变得美好! susu

    展开全文
  • Docker是什么?有什么用

    千次阅读 2019-03-27 11:22:39
    定义 我们知道,软件依赖的环境大致包括: • 配置文件 • 代码 • tomcat ...docker有3大核心:镜像、容器、仓库。 鲸鱼是操作系统。 要交付的应用程序是各种货物,要将各种形状和尺寸不同的货物...

    定义

    我们知道,软件依赖的环境大致包括:

    • 配置文件
    • 代码
    • tomcat
    • JDK
    • 操作系统

    Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。

     

    核心

    docker有3大核心:镜像、容器、仓库。

    鲸鱼是操作系统。
    要交付的应用程序是各种货物,要将各种形状和尺寸不同的货物放到大鲸鱼上,得考虑每件货物怎么安放(应用程序配套的环境),还得考虑货物和货物之间能否重叠起来(应用程序依赖的环境是否会冲突)。
    现在使用了集装箱(容器)把每件货物都放到集装箱里,这样大鲸鱼可以用同样地方式安放、堆叠集装了,省事省力。
    即:打包放到鲸鱼上,鲸鱼放到服务器上。也就是“build——ship——run”,这样在自己的电脑上怎么运行,在服务器上也会怎么运行。
    用docker运行一个程序的过程:
    去仓库把镜像拉到本地,然后用一条命令把镜像运行起来,变成容器。

    (1) 镜像-复制的程序

        定义:
        Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

        作用
        类似于虚拟机的快照,用来创建新的容器。

        特点:
        镜像不包含任何动态数据,其内容在构建之后也不会被改变。

    (2)容器-集装箱

    • 运行程序的地方
    • 镜像是静态的,每一层都只是可读的,而容器是动态的,里面运行着我们指定的应用。

    (3)仓库-存放镜像的地方

    在知乎上看到一个很好的解释:
    在这里插入图片描述


    简单来说就是,不同的应用程序所依赖的环境不一样,如果把他们依赖的软件都安装在一个服务器上,不仅需要调试很久,而且可能会有冲突。
    如果想把两个应用程序隔离起来,可以在服务器上创建不同的虚拟机,不同的虚拟机放不同的应用,但是虚拟机的开销比较高。docker作为轻量级的虚拟机,是一个很好的工具。

     

    • 存放镜像的地方,和git类似

    作用?

     

    • 解决运行环境不一致所导致的问题。这样就不会产生“本地运行没问题,可一到服务器上就不行了”的情况。
    • 限定最大的cpu使用内存硬盘,这样就起到了隔离的作用,避免产生“一块代码产生死循环,把磁盘占满了,其它程序也挂了”的情况。
    • 双11时扩展机器用。

     

    总结成一句话:docker的标准化让快速扩展,弹性伸缩变得简单

    使用之前和之后

    之前,可以发现,每发布一个程序,都要走一遍以下的流程:

    之后:

    原文:https://blog.csdn.net/qsbbl/article/details/86715741

    理解篇

    Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。

    docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。

    • 1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。
    • 2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。
    • 3.在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。总之docker就是集装箱原理。

    作者:刘允鹏
    链接:https://www.zhihu.com/question/28300645/answer/67707287
    来源:知乎

    开发者可以使用Docker做什么?

    【编者的话】有些开发者可能还是不明白 Docker 对自己到底有多大的用处,因此翻译 Docker 个人用例 这篇文章中来介绍 Docker 在普通开发者开发过程中的用例。


    Docker 如今赢得了许多关注,很多人觉得盛名之下其实难副,因为他们仍然搞不清 Docker 和普通开发者到底有什么关系。许多开发者觉得 Docker 离自己很远,Docker 是生产环境中的工具,和自己无关。我也是花了很长时间才想清楚作为普通开发人员如何在自己的开发中使用 Docker。坦率地说,我仍处在学习的过程中。

    这篇文章提供了一个 Docker 用例列表,我希望它能更好地帮助你理解 Docker 并引发你的思考。本文只是描述 Docker 在普通开发者日常的应用,并不提供完整的解决方案。

    在介绍用例之前,我希望你能先记住这句话:“Docker 是一个便携的应用容器”。你可以不知道 Docker 所说的的“便携式容器”到底是什么意思,但是你必须清楚 Docker 在日常中能带来非常大的效率提升。

    当你需要在容器内运行自己的应用(当然可以是任何应用),Docker 都提供了一个基础系统镜像作为运行应用时的基础系统。也就是说,只要是 Linux 系统上的应用都可以运行在 Docker 中。

    可以在 Docker 里面运行数据库吗?当然可以。
    可以在 Docker 里面运行 Node.js 网站服务器吗?当然可以。
    可以在 Docker 里面运行 API 服务器吗?当然可以。

    Docker 并不在乎你的应用程序是什么、做什么,Docker 提供了一组应用打包、传输和部署的方法,以便你能更好地在容器内运行任何应用。

    下面的例子我自己经常使用,当然你有更好的案例也可以分享给我。

    一、尝试新软件

    对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境。Docker 有一个傻瓜化的获取软件的方法,Docker 后台会自动获得环境镜像并且运行环境。

    并不仅仅是新技术环境搭建用得到 Docker。如果你想快速在你的笔记本上运行一个 MySQL 数据库,或者一个 Redis 消息队列,那么使用 Docker 便可以非常容易地做到。例如 Docker 只需要一条命令便可以运行 MySQL 数据库:

                    docker run -d -p 3306:3306 tutum/mysql

    译者注:虽然使用命令也能非常快地安装 MySQL 数据库,但是当用到最新的技术或者非常复杂的技术时,使用 Docker 便会是个非常好的选择,例如 Gitlab,普通用户大概需要一天的时间去搭建 Gitlab 平台,而 Docker 则只需要一条命令

    二、进行演示

    现在我经常需要在周末用自己开发的成果对客户活着别人做一两个演示。搭建演示环境的过程非常麻烦。现在我发现 Docker 已经成为我演示这些工具的最合理的方式。同时,对于客户来说,我可以直接将 Docker 镜像提供给他们,而不必去做任何环境配置的工作,工作的效果也会和在他们演示中所看到的一模一样,同时不必担心他们的环境配置会导致我们的产品无法运行。

    三、避免“我机器上可以运行”

    无论是上一篇介绍的企业部署 Docker 还是本文的个人 Docker 用例,都提到了这个情况。因为环境配置不同,很多人在开发中也会遇到这个情况,甚至开发的软件到了测试人员的机器上便不能运行。但这都不是重点。重点是,如果我们有一个可靠的、可分发的标准开发环境,那么我们的开发将不会像现在这么痛苦。Docker 便可以解决这个问题。Docker 镜像并不会因为环境的变化而不能运行,也不会在不同的电脑上有不同的运行结果。可以给测试人员提交含有应用的 Docker 镜像,这样便不再会发生“在我机器上是可以运行的”这种事情,很大程度上减轻了开发人员测试人员互相检查机器环境设置带来的时间成本。

    另一个 Docker 可以发挥用处的地方是培训班。除了 Docker 容器的隔离性之外,更能体会到 Docker 优势的地方在于环境搭建。培训班的新手每个人都要在环境搭建上花费很多时间,但是如果在这里应用到 Docker 的话,那么我们只需要把标准的运行环境镜像分发下去,然后就可以开始上课了。使用 Docker 和使用虚拟机一样简单,但是 Docker 要更方便、更轻量级。同时,我们也可以告诉学员:“在培训的同时,我们还将学到当下最流行的技术——Docker”,这种双赢的结局,何乐而不为呢。

    四、学习 Linux 脚本

    当然这个原因看起来可能很奇怪,但是对不不熟悉 Linux 操作系统和 Shell 脚本的人来说,确实是一个好机会。即便本文并不是在讲 Linux,Linux 的重要度仍然不言而喻。如果你用的是 Windows,那么我给你一个建议:从云主机提供商那儿租用一台云主机:我推荐使用 CoreOS 系统的云主机。虽然这样并不会让你成为专业的 Linux 运维,但是可以让你快速地学到 Linux 基础知识,爱上命令行操作,并且慢慢开始熟悉和欣赏 Linux。

    五、更好地利用资源

    虚拟机的粒度是“虚拟出的机器”,而 Docker 的粒度则是“被限制的应用”,相比较而言 Docker 的内存占用更少,更加轻量级。
    对我来说这是 Docker 的一个优势:因为我经常在自己电脑中运行多个 Docker 应用,使用 Docker 比使用虚拟机更加简单,方便,粒度更细,也能持续地跟踪容器状态。

    六、为微服务定制

    如果你一直在关注科技新闻的话,那么你应该听说过“微服务(Microservices)”的概念。Docker 可以很好地和微服务结合起来。从概念上来说,一个微服务便是一个提供一整套应用程序的部分功能,Docker 便可以在开发、测试和部署过程中一直充当微服务的容器。甚至生产环境也可以在 Docker 中部署微服务。

    七、在云服务提供商之间移植

    大多数的云主机提供商已经全面支持 Docker。对于开发人员来说,这表示你可以很方便地切换云服务提供商,当然也可以很方便地将你本地的开发环境移动到云主机上,不需要本地上配置一次运行环境、在云主机上还配置一次运行环境。全面部署 Docker (Docker here and Docker there) 作为标准运行环境可以极大地减轻应用上线时的工作量和产生 BUG。

    八、API 端

    API 是应用之间的粘合剂,一个合格开发者肯定使用过别人提供的 REST API,或者自己开发过 REST API。需要指出的是,无论是客户端还是 API 提供端,在开发之前都需要先定义一组公共的 API 接口,写成文档,然后才能进行编码。如果服务端和客户端是共同开发的话,那么服务端通常会先实现能返回固定字符串的 API 接口,在以后的开发中再慢慢去实现 API 的功能。

    虽然有人会认为在这里 Docker 被滥用了,完全可以用 sample.json 这种文件去实现虚拟 API,但是下面有个实例可以更好地解决前后端分离开发时的 API 问题。

    为了更好地解释我的意思,给大家提供一个实例:JSON Server,一个用于提供 JSON 数据的 REST API。使用过这个容器的人就会知道,既然有这么好用的 Docker JSON Server,我们没有理由不用 Docker。

    译者注:

    • 运行示例的 JSON Server,同时使用示例中提供的 JSON 文件,只需执行一条命令便可以创建一个服务端的 API 应用。
    • 使用 curl http://127.0.0.1:80/posts 即可获取示例文件中的 posts 段,这样在后端没有开发完 API 的时候,前端一样可以进行协同开发。

    九、技术的创新

    这点应该算不上是用例,但是我还是来写一下。Docker 正在快速发展,工具也在不断更新,没有人能预见到未来 Docker 会是什么样子的。你在复杂的系统中 Docker 使用的越多,越是可能会发现技术上的空白和未来技术发展的方向。现在还处在 Docker 的发展期,任何你使用 Docker 创建的工具都有可能成为社区关注的热点。这是 Docker 的机会,也是成就你自己的机会。
     

    其他

    还有两个技巧可以分享给你们。在学习 Docker 的过程中因为有了这两个的帮助,我才得意不断地提升自己。

    一:Docker Hub Registry。这是 Docker 的官方镜像仓库,除了托管着 Docker 官方的镜像外,和 Github 一样,你可以在上面上传自己的镜像,也可以在上面搜寻其他有用的镜像,极大地节省自己的时间。例如 Oracle-XE-11g 镜像,所有的一切都是现成的,完全不需要自己去下载 Oracle XE 11g 安装。这样为你和团队节约了大量的时间成本。

    如果你不太确定的话,可以去 Docker Hub 上搜有一下有没有自己用得到的镜像。大部分情况下你所需要的镜像在 Docker Hub 上都已经有人构建了。

    二:多参考 IaaS 供应商的新闻,虽然我们不能像在他们会议室里那样完全了解他们的公司动态,但是仍然可以从新闻中可以了解到 Docker 最新的发展方向和技术趋势。可以肯定的是,容器化技术是未来的热点,我们不仅可以在本机运行 Docker,不仅仅在一家云服务提供商的主机上运行 Docker,未来所有的云服务提供商都会支持 Docker。

    Docker 前景很明确,采用 Docker 只会让开发变得更方便。

    原文链接:Docker Use Cases(翻译:大舒)

    展开全文
  • 什么80%的码农都做不了架构师?>>> ...

    近年来,Docker越来越火爆,一大堆新概念,轻量级虚拟机,集装箱等概念,眼光缭乱。

    慢慢也尝试用vagrant+docker搭建开发环境 和 服务器也用docker搭建测试环境,再逐步正式环境也用上docker,也对docker的认识也逐渐加深了,根据Docker特性,总结一下使用Docker有哪些实际的好处和不足。

    好处

    1.搭建不同版本或者多种语言的开发环境,非常方便。 在Linux上,再安装Docker再搭建环境,是不是觉得尽管Docker很轻量级,性能消耗并不大,这样搭建环境,把事情复杂化?是复杂了一点点,但是那代价还是值得的,因为开发环境一直在升级,今天用apache2.2,明天出apache2.4,直接升级,还是再买一台电脑来搭建测试,那都是不实际,最好是用轻量级隔离,类似沙箱的系统环境来搭建,那就是docker,随意创建容器搭建不同版本的环境,或者测试其他技术方案,不用破坏原有开发环境,也不怕搞坏系统,搞错了最多把容器删掉。

    2.搭建测试环境,可以用一台服务器可以轻松搭建多个测试服,那也是很爽的事情。

    3.搭建正式环境,就是生产环境,部署2个Docker容器或以上,可以搭建微型的负载均衡,避免单个节点挂了,网站就访问不了。

    不足

    1. 暂时没看到很好的快速入门教程,导致折腾了很久才上手,这个可以总结一下经验,避免掉坑。
    2. 依然是网络问题,被墙,要用加速服务器或者镜像服务器。
    3. docker images随着时间的累积,文件偏大,第一次部署到服务器,还是挺麻烦的

    总结来说,Docker也是一个不错的轻量级虚拟机,可以轻易搭建出多种开发环境,多个测试环境,多个正式服节点;可以借鉴这思路,想出更多Docker使用场景。

    转载于:https://my.oschina.net/lyaohe/blog/780115

    展开全文
  • Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学...
  • Docker到底有什么用

    千次阅读 2019-07-30 15:10:00
    简介:Docker是一个开源的应用容器引擎。 (不是一个虚拟机,是一个轻量级容器技术,实现了虚拟机技术里面的资源隔离) 性能要远远高于虚拟机。(启动虚拟机要几分钟,启动docker几秒甚至毫秒...容器之间沙箱的隔离...
  • 前言:笔者前后两次看了docker的一些文章介绍,每次看完都是一头雾水。总有种是懂非懂的感觉...docker到底有什么用? 可以延伸想到-一般我们使用虚拟机来做什么? 比如搭建redis集群等等 在延伸想到git是用来做...
  • 本文仅仅是个docker入门介绍文章,比较宏大的叙事来描述docker的面貌,如果想了解更细节或者更深入的东西,还是需要去深入学习官方文档等内容。答案正文:---# 难懂的docker学术式定义Docker is an open...
  • docker镜像的用处:1、镜像是Docker运行容器的前提,仓库是存放镜像的场所,更是Docker的核心;2、镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时...
  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会任何接口。 部分...
  • 那么如果使用docker有什么优势呢?你觉得docker没啥,自然是因为你没遇到这样的场景,所以就算强行上了docker,也会觉得非常别扭。想了想前端docker好像确实不是非常必要,npm build以后出来一堆静态文件,扔到...
  • Docker是一个基于轻量级虚拟化技术的容器,整个项目基于Go语言开发,并采用了Apache 2.0协议。Docker可以将我们的应用程序打包封装到一个容器中,该容器包含了应用程序的代码、运行环境、依赖库、配置文件等必需的...
  • 早在2013年的时候,docker就已经发行,然而那会还是很少人了解docker。一直到2014年,Martin Fowler提出了微服务的概念,两个不相干的技术终于走在了一起,创造了今天的...Docker有什么用? docker就是类似的理念。..
  • Docker有什么好处?

    2016-07-18 17:51:00
    Docker背后的想法是创建软件程序可移植的轻量容器,让其可以在任何安装了Docker的机器上运行,而不用关心底层操作系统,类似船舶使用的集装箱,野心勃勃的...创建容易分发的即启即的应用 允许实例简单、快速地...
  • 一、为什么有docker? PaaS 项目被大家接纳的一个主要原因,就是它提供了一种名叫“应用托管”的能力。在当时,虚拟机和云计算已经是比较普遍的技术和服务了,那时主流用户的普遍用法,就是租一批 AWS 或者 ...
  • 本文出自我的博客园,地址《微服务为什么一定要用docker》以及公众号《微服务为什么一定要用docker》引言早在2013年的时候,docker就已经发行,然而那会还是很少人了解docker。一直到2014年,Martin Fowler提出了...
  • Docker什么

    2019-09-28 05:32:28
    关于 Docker什么个著名的隐喻:集装箱。但是它却起了个“码头工人”(docker 的英文翻译)的名字。 这无疑给使用者很多暗示:“快来吧!Docker,就像世界出现了集装箱,这样你的业务就可以随意的、...
  • Docker是容器的代名词,K8S是容器编排的代名词,先说说这俩东西在云计算领域多火。先看几组数字:2018年, Docker 公司在每两周容器下载量超10亿;截止2019年第一季度,下载量约为500亿次;仅仅1年,就超过100万...
  • 首先来说结论,Kubernetes 弃 Docker 对程序员没有什么影响。原因很简单,程序员可以继续使用 Docker Image,因为 Docker 的容器镜像 (Image) 遵循 OCI 标准,这是 Docker 在 2015 年发起的标准。Kuberenetes 的...
  • docker什么

    2017-12-15 13:19:56
    Docker有,看这篇文章就够了![转] 标签:Docker 发布于 2017-12-13 14:40:41 Docker是啥? 打开翻译君输入Docker 结果显示码头工人,没错!码头工人搬运的是集装箱,那么今天要讲的Docker其操作的也是集装...
  • Docker什么

    2018-10-15 12:21:49
    把他想象成一个了一种新颖方式实现的超轻量【虚拟机】,当然在实现的原理和应用上还是和VM巨大差别的,并且专业的叫法是应用容器(Application Container)。 二、为什么容器 一个做好的应用容器长得就好像一...
  • Docker简介

    2020-04-26 11:36:39
    Docker简介 目录 Docker简介 1、Docker是什么 2、Docker有什么用 3、Docker的框架原理 4、Docker与虚拟机有何区别 1、Docker是什么 (1)Docker ...
  • 我们究竟要用Docker什么

    万次阅读 2017-02-07 23:38:19
    最近跟不少人聊起接下来要做什么,总是一种能做的很多,但是能做的又很少的感觉。想了一下原因,感觉还是对dockerdocker的生态系统、应用和集群没有划清楚的界限,docker并不是很多问题的最终解决方案,只是解
  • Docker是干什么用的?

    2019-11-20 11:24:53
    长话短说,这里我就不对docker进行系统的介绍说明了,网上很多介绍文章,我想新手的话可以先网上大概了解一下docker的基本概念。一个模糊的、大概的感觉就行了。多看资料文档,百利而无一害。 Docker不是虚拟机 ...
  • docker优势、为什么用docker

    千次阅读 2018-10-31 15:28:29
    版权声明:本文为博主原创文章,未经博主允许不得转载。...1.什么是容器?  依托与linux 内核功能的虚拟化技术 2. docker什么?...3. docker 跟原有的工具何区别? 传统的部署模式是:安装(包管...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,437
精华内容 574
关键字:

docker有什么用