Docker简介

什么是容器?

  一种虚拟化的方案,操作系统级别的虚拟化。容器是一个轻量的、独立的、可执行的包,包含了执行它所需要的所有东西:代码、运行环境、系统工具、系统库、设置。很长一段时间中,容器是专门用于Linux内核的,但微软和Docker的密切合作将容器带到了微软平台上,现在可以再Linux、windows、Azure、Mac等等操作系统上使用。

虚拟机和容器的区别

  磁盘占用空间更少(虚拟机除了应用的运行环境外,还需要安装操作系统。几个G,而容器只需要包含应用程序和它依赖的库)

  资源占用减少(虚拟机需要模拟硬件的行为,对内存和CPU的损耗特别大,同样配置的服务器使用容器要比使用虚拟机服务更多的客户)

  没有docker前,容器技术很复杂,不容易安装,也不容易管理实现自动化,而docker就是为了改变些。

什么是Docker?

   是一个由GO语言编写的程序运行的“容器”,目前容器服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。Docker则实现了一种应用程序级别的隔离,它改变我们基本的开发、操作但愿,由直接操作虚拟主机,转换到操作程序运行的“容器”上来。

  Docker的英文本意是码头工人,也就是搬运工,这种搬运工搬运的十集装箱(Container),集装箱里面装的可不是商品货物,而是任意类型的App,Docker把App装在Container内,通过Linux Container技术的包装将App变成一种标准化的、可移植的、自管理的组件,这种组件可以再你的Laptop上开发、调试、运行,最终非常方便和一致地运行在生产环境下。Docker的核心底层技术是(Linux Container)LXC,Docker在其上面加了薄薄的一层,添加了许多有用的功能。

  Docker不仅是历史上最流行的开源项目之一,而且也从跟上上改变了人们构建应用程序的思维方式,它可以把程序集依赖的二进制文件、第三方库等封装在一起,运行在任何安装Docker Deamon的服务器上,它有望成为未来软件自动化部署的标准。

  

Docker的目标

  “Build, Ship And Run Any APP, Anywhere” 编译,装载任何APP,在任何地方都可以运行。

  大概就是一个容器,实现了对应用的封装,部署,运行等声明周期管理,只要在(go语言依赖的环境)glibc的环境下,导出都可以运行。

Docker与虚拟机的区别

可见每一个虚拟机包括应用、必要的二进制文件和库、完整的客户端操作系统,大小总计十几个GB。容器包括应用和应用的所有依赖,每个容器都使用容器自身选择的发型版本,但是与其他容器共享宿主操作系统的内核。在宿主操作系统的用户空间内,他们以隔离的进程方式运行。另外,他们并不像客户端操作系统正常运行那样运行所有的进程。而且容器也补绑定任何特别的硬件基础设施,Docker容器在任何计算机任何硬件基础设施任何云上都可以运行。

更重要的是,虚拟机需要耗时几分钟才能启动,而且对资源敏感,然后容器只需要几秒启动,在资源较少负载过大时也能应付的了。所以,可以再本地计算机运行很少的几个虚拟机用于开发目的,但是可以运行很多很多的容器。

Docker的使用场景

  1.使用Docker容器开发、测试、部署服务

  2.创建隔离的运行环境

  3.搭建测试环境

  4.构建多用户的平台即服务(PaaS)基础设施

  5.提供软件即服务(Saas)应用程序

  6.高性能、超大规模的宿主机部署

Docker的基本组成

Docker是C/S架构的程序, 由下面三部分组成:

  Docker Client 客户端:Docker 命令行工具,是用户使用Docker的主要方式,Docker client与Docker daemon通信并将结果返回给用户,Docker client也可以通过socket或者RESTful api访问远程的Docker daemon(守护进程 服务端)

  Docker Daemon 守护进程:Docker 守护进程,也就是Server端,Server端可以部署在本地,也可以部署在远程,因为Server端与客户端是通过Rest Ful API进行通信的。

  Docker Image 镜像:镜像是一个层叠的只读文件,镜像中包含有需要运行的文件。镜像用来创建container,一个镜像可以运行多个container,镜像可以通过Dockerfile创建,也可以从Docker hub/registry上下载。

  Docker Container 容器:容器是Dcoker的运行组件,启动一个镜像就是一个容器,容器是一个隔离环境,多个容器之间不会相互影响,保证容器中的程序运行在一个相对安全的环境中。容器基于镜像启动和运行。

  Docker Registry 仓库:共享和管理Docker镜像,用户可以上传或者下载上面的镜像,官方地址为:https://registry.hub.docker.com/ 也可以搭建自己私有的Docker registry

Docker的优点

  Docker提供了一种可移植的配置标准化机制,允许你一致性地在不同的机器上运行同一个Container,而LXC(Linux Container)本身可能因为不同机器的不同配置而无法方便的移植运行。

   Docker以App为中心,为应用的部署做了很多优化,而LXC的帮助脚本主要是聚焦于如何使机器启动地更快和小号更少的内存。

  Docker为App提供了一种自动化构建机制(Dockerfile),包括打包,基础设施管理和安装等。

  Docker提供了一种类似git的Container版本化的机制,允许你对你创建过的容器进行版本管理,依靠这种机制,你还可以下载别人的Container,甚至像git那样合并。

  Docker Container 是可重用的,依赖于版本化机制,你很容易重用别人的Container,作为基础版本进行扩展

  Docker Container 是共享的,有点类似github一样,Docker有自己的Index,你可以创建自己的DOcker用户并上传和下载Docker Image

  Docker提供了很多的工具链,形成了一个生态系统,这些工具的目标是自动化、个性化和集成化,包括对PASS平台的支持等。

  速度快:运行时的性能可以获取极大提升,管理操作(启动、停止、开始、重启等)都是以秒为单位的,将应用和系统容器化,不添加额外的操作系统。

  敏捷:比VM小,比VM快,Docker容器的尺寸减小相比整个虚拟机大大简化了分布到于和仍与分发灵活。

  轻量:你会拥有足够的操作系统,仅需添加或减小镜像即可。在一台服务器上可以部署100~1000个Containers容器。

  便宜:开源的、免费的、低成本的。由现代Linux内核支持驱动,轻量的Container必定可以再一个物理机上开启更多容器,注定比VM要便宜。

Docker的安装

官网地址:https://docs.docker.com/install/

首先要科学上网,才能加载出google的验证码,注册 登陆后 才可以下载。

这里是下的mac版的.安装后登陆账号就可以了

打开终端输入 docker --version 检查是否安装成功

docker --version 

Docker version 18.03.-ce, build 9ee9f40

镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。

在任务栏点击 Docker for mac 应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址即可。修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。

之后我们可以通过 docker info 来查看是否配置成功。

$ docker info
...
Registry Mirrors:
http://hub-mirror.c.163.com
Live Restore Enabled: false

Docker (1) 基本概念和安装的更多相关文章

  1. docker的核心概念和安装

    里Dcoker的安装要求 我这里安装的是在vmware下的centos7 64位 并且通过模拟远程连接xshell 我在安装好之后就配置了静态ip,这里我就不多说怎么配置了 具体静态ip配置可以参考 ...

  2. Docker系列(一)Docker概述,核心概念讲解,安装部署

    部分内容参考链接: Docker实战总结(非常全面,建议收藏) 一. Docker概述 Docker是一个开源的应用容器引擎(基于Go语言开发),让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...

  3. 二、【Docker笔记】Docker的核心概念及安装

    Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 ​ Docker镜像其实与虚拟机镜像很类似, ...

  4. Docker教程:dokcer machine的概念和安装

    http://blog.csdn.net/pipisorry/article/details/50920982 Docker machine介绍 做为Docker容器集群管理三剑客之一的Docker ...

  5. Docker教程:docker的概念及安装

    http://blog.csdn.net/pipisorry/article/details/50754385 Why docker 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规 ...

  6. Docker基础概念与安装

    Docker是什么? Docker最初是dotCloud公司的创始人Solomon Hyks在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以 ...

  7. Docker的学习--介绍和安装

    什么是 Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Lin ...

  8. Docker的一些概念

    Docker的一些概念 2.1 什么是Docker? 说实话关于Docker是什么并太好说,下面我通过四点向你说明Docker到底是个什么东西. Docker 是世界领先的软件容器平台. Docker ...

  9. Docker 01 - CentOS 7 中安装 Docker 的详细步骤

    目录 1 初识 Docker 1.1 Docker 原理简介 1.2 Docker 核心概念 2 安装 Docker 2.1 查看系统内核版本 2.2 更新 yum 包 2.3 安装软件包 2.4 向 ...

随机推荐

  1. codevs——6221 数的统计

    6221 数的统计  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 有一个人名字叫A,B总喜欢打他. 这 ...

  2. js获取上传的文件名称

    <input name="file_" type="file" id="file_" size="100" /&g ...

  3. Windows 10 S中的Device Guard详解(上篇)

    本文探讨Windows 10 S(下称Win10S)中的Device Guard(设备保护,下称DG).我将提取策略,并弄清楚在默认Win10S系统上可以和不可以运行什么.我将在下一篇文章中介绍在不安 ...

  4. Spring PropertyPlaceholderConfigure 载入配置文件

    在開始这篇博客的主题之前,我们先来了解一下Spring配置文件以及包括的相关内容. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2 ...

  5. Windows下安Mac

    Windows PC下安装苹果系统 第一步: 準備2個新邏輯分區,一個6G(os),一個隨意(Mac),且不要格式化. 第二步: 启动硬盘助手,选择下载好的苹果镜像文件  .再选择6G(os)分區,寫 ...

  6. Redis学习笔记3-Redis5个可运行程序命令的使用

    在redis安装文章中,说到安装好redis后,在/usr/local/bin下有5个关于redis的可运行程序.以下关于这5个可运行程序命令的具体说明. redis-server Redisserv ...

  7. 何时、怎样开启 MySql 日志?

    假如你是一名 web 开发者.假设你想调试你的应用或提升其性能的话,那你须要去參考各种日志文件.日志是開始故障排除最好的选择.就著名的 MySql 数据库server而言,你须要參考下面日志文件: 错 ...

  8. Java后端发出post请求带参数并接收返回的json

    核心代码: 参数格式: “key1=value1&key2=value2” /*** sendUrl    (远程请求的URL)* param    (远程请求参数)* JSONObject  ...

  9. 167. Two Sum II - Input array is sorted (二分ortwo-pointer)

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  10. 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值

    关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...