资讯专栏INFORMATION COLUMN

Docker实战指南(一):Docker介绍

SKYZACK / 1095人阅读

摘要:主机名命名空间,不同的内部可以拥有不同的主机名。此外,也是解决跨平台部署的利器。也许看完上述介绍大家还是云里雾里,没关系,既然叫实战指南,那么必然有实战部分,我们从最简单的程序开始。后续我们将介绍,如果利用运行你自己的程序。

原文地址:Docker实战指南(一):Docker介绍

Introduction

我第一次注意到Docker大概是在2014年的时候,当时对Docker的第一印象就是,哇靠,这不就是LXC + cgroups吗,新瓶装旧酒又拿来卖了?这都行?
直到2015年6月,在各大IT巨头的推动下,Open Container Initiative(OCI)成立,并制定了Open Container的第一版接口的标准规范,Docker正式的成为了Container技术的龙头。
本系列文章将循序渐进的带您深入到Docker的方方面面中,让您体会到Docker相比传统的LXC技术的优势所在,以及如何将这些优势收为己用。

Docker的前世今生

简单来说,Docker就是一个应用程序,一个后台守护进程而已。从技术本质上来讲,Docker基于Linux Namespace技术,但又不仅仅是Namespace那么简单,否则的话LXC同样可以火起来。
Docker提供了很多新工具/概念,如沙箱环境(sandbox environment),命令行工具(command-line tool),镜像管理(image management)等等。这些额外的工具让Docker变得易于使用,在众多Container技术中脱颖而出。
Docker的出现改变了软件开发和软件运营的方式,从架构到开发和测试,再到交付以及上线,依靠Docker,这一系列的流程都得到了简化,大大加快了工程上线的开发速度,降低了企业的成本。
同时,Docker有了自己的生态圈,众多公司,包括Google, Microsoft, Intel, IBM, VMware这些巨头,都聚在一起推动Docker发展。Google推出了基于Docker的云服务,Microsoft也推出了基于Windows的Docker支持,AWS也可以托管Docker镜像。Docker逐渐发展为虚拟化技术(Virtualization)和云计算(Cloud Computing)中的新宠。

Docker vs Virtualization

Docker并不是虚拟化(Virtualization)技术。虽然和虚拟化一样,提供了隔离(isolation)的能力,但是对比虚拟化技术,docker并没有使用硬件虚拟化(hardware virtualization)技术,而仅仅是用户态的一个进程而已。用户的应用程序作为一个Linux的用户态进程,运行在Docker的容器(container)中。
而做到这些的便是Docker采用的以下八个技术:

PID namespace:进程的命名空间,不同的container内部的进程拥有独立的PID。

UTS namespace:主机名命名空间,不同的container内部可以拥有不同的主机名。

MNT namespace:文件系统命名空间,不同的container内部可以拥有不同的文件系统。

IPC namespace:进程间通信命名空间,不同的container内部可以拥有不同的进程间通信空间,如各自独立的共享内存。

NET namespace:网络命名空间,不同的container内部可以有不同的网络连接访问方式。

USR namespace:用户命名空间,不同的container内部可以有不同的用户。

chroot():不同的container可以有不同的root目录。

cgroups:不同的container可以有各自受保护的资源。

上面的八个技术构成了Docker的运行时(runtime)所需的技术。

为什么使用Docker

简单来说,可以让软件开发流程变得快速简单,尤其是在环境的配置上面。
相信大家都有这样的噩梦,每次要开发新软件或者换环境的时候,需要安装配置一大堆的依赖。虽然有yum或者apt这类的包管理软件帮忙,但是如果出现的包冲突,或者找不到包的情况,或者需要源码编译却缺失依赖,这种环境部署简直就是噩梦。
Docker就是解决上述噩梦的利器。
此外,Docker也是解决跨平台部署的利器。你可以在你的MacOS, Windows, Linux上安装Docker,然后下载你所需要的Docker镜像(image)进行程序开发。当你的程序需要发布的时候,仅仅需要将你的Docker镜像打包发布,不再需要搭建新环境。

Hello World!

也许看完上述介绍大家还是云里雾里,没关系,既然叫实战指南,那么必然有实战部分,我们从最简单的Hello World程序开始。
首先下载Docker安装环境:https://docs.docker.com/engin...。
里面有Linux版的,Windows版的,MacOS版的,Cloud版的,选择适合你的就好。
当安装好之后,在命令行中运行:

docker run dockerinaction/hello_world

如果失败,那么需要使用root权限来操作,Windows的话请采用管理员(administrator)权限。
一切就绪后,你应该可以看到一句:

hello world

至此,第一个Hello World程序成功运行。
中间发生了什么?这个命令完成了下面一系列的操作:

Docker检查是否有所需的镜像,如果没有,那么尝试去Docker Hub下载所需镜像。

安装所需镜像。

Docker创建一个容器,并加载镜像,运行镜像中的Hello World程序。

至于这个程序是什么,答案很简单:

echo "hello world"
Summary

我们简单的介绍了Docker的前世今生,采用的技术,以及使用的场景,最后用一个简单的Hello World程序来进行实战。
后续我们将介绍,如果利用Docker运行你自己的程序。

(本文出自csprojectedu.com,转载请注明出处)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/26681.html

相关文章

  • Docker实战指南(二):在Docker中搭建Nginx服务器

    摘要:原文地址实战指南二在中搭建服务器学习最快的方法就是直接使用,在实战指南一介绍中,我们已经介绍了如何快速搭建,以及如何在中运行我们的第一个程序。 原文地址:Docker实战指南(二):在Docker中搭建Nginx服务器 Introduction 学习Docker最快的方法就是直接使用,在Docker实战指南(一):Docker介绍中,我们已经介绍了如何快速搭建Docker,以及如何在D...

    Jensen 评论0 收藏0
  • Docker实战指南(三):Docker镜像

    摘要:原文地址实战指南三镜像在实战指南二在中搭建服务器中,我们已经介绍了如何快速地搭建一个实用的服务器。这次我们将围绕镜像,介绍其使用方法。此外,你也可以通过访问,通过来搜索你需要的镜像。通过此实战,你应该对镜像有了更深入的体会。 原文地址:Docker实战指南(三):Docker镜像 Introduction 在Docker实战指南(二):在Docker中搭建Nginx服务器中,我们已经介...

    Donne 评论0 收藏0
  • PHPer书单

    摘要:想提升自己,还得多看书多看书多看书下面是我收集到的一些程序员应该看得书单及在线教程,自己也没有全部看完。共勉吧当然,如果你有好的书想分享给大家的或者觉得书单不合理,可以去通过进行提交。讲师温铭,软件基金会主席,最佳实践作者。 想提升自己,还得多看书!多看书!多看书!下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完。共勉吧!当然,如果你有好的书想分享给大家的或者...

    jimhs 评论0 收藏0
  • 从小白程序员路晋升为大厂高级技术专家我看过哪些书籍?(建议收藏)

    摘要:大家好,我是冰河有句话叫做投资啥都不如投资自己的回报率高。马上就十一国庆假期了,给小伙伴们分享下,从小白程序员到大厂高级技术专家我看过哪些技术类书籍。 大家好,我是...

    sf_wangchong 评论0 收藏0
  • CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    摘要:围绕软件工程效率提升进行一系列技术内容分享,包括国内外持续集成持续交付,持续部署自动化测试等实践教程工具与资源,以及一些工程师文化相关的程序员。划分了数据库日志安全监控配置管理云服务等个大类,个工具。 CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成、持续交付,持续部署、自动化测试、 DevOps 等实践教程、工具与资源,以及一些工程师文化相关...

    monw3c 评论0 收藏0

发表评论

0条评论

SKYZACK

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<