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

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

Introduction

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

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内部能够拥有不一样的进程间通讯空间,如各自独立的共享内存。spa

  • NET namespace:网络命名空间,不一样的container内部能够有不一样的网络链接访问方式。命令行

  • USR namespace:用户命名空间,不一样的container内部能够有不一样的用户。code

  • 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程序成功运行。
中间发生了什么?这个命令完成了下面一系列的操做:

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

  2. 安装所需镜像。

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

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

echo "hello world"

Summary

咱们简单的介绍了Docker的前世此生,采用的技术,以及使用的场景,最后用一个简单的Hello World程序来进行实战。
后续咱们将介绍,若是利用Docker运行你本身的程序。

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

相关文章
相关标签/搜索