什么是docker

docker自2013年诞生以来已有5年了,最初基于Google公司的go语言实现的,项目代码在GitHub上进行维护。

项目地址https://github.com/moby/moby

docker是为了实现轻量级的操作系统虚拟化解决方案,基础在linux系统的ubuntu版本下开发的。

下图比较了Docker和传统虚拟化方式的区别:

可以看出容器是在操作系统层面实现虚拟化,直接服用本地主机的操作系统,而传统的方式则是在硬件层面实现的。

docker的优势

更快速的交付和部署:开发者可以使用标准的镜像来构建一套开发容器,在完成开发以后,运维人员可以直接使用这个容器来部署代码。docker的启动时秒级的,节约了开发测试以及部署的时间。

更高效的虚拟化:docker是内核级的虚拟化,因此可以实现更高的性能和效率。

更轻松的迁移和扩展:docker支持linux、window、macOS,几乎可以在任意的平台运行,这种兼容性非常方便应用程序在平台间的迁移。

更简单的管理:docker所有的修改都已增量的方式被分发和更新,从而实现了自动化的管理

总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

安装

Linux(以Ubuntu16.04为参考)

1. 使用root权限登录,保证管理有root权限或者可以执行sudo

2. 检查curl包有没有安装

$ which curl

如果没有安装,更新apt源之后安装curl包

$ sudo apt-get update 

$ sudo apt-get install curl$ sudo apt-get update 

3. 获取最新的docker安装包

$ curl -sSL https://get.docker.com/ | sh 

注意,该命令需要sudo权限

4. 确认docker是否安装成功

$ sudo docker run hello-world

注意:该命令的作用是下载一个测试用的镜像并启动一个容器运行它,运行完成以后会输出:hello-world。表明docker成功安装。

其他版本的Linux安装docker请参考这里:http://www.docker.org.cn/book/install/linux.html

window

win7、win8下安装

docker的守护进程依赖于linux内核,无法直接在windows环境直接运行docker,解决方案就是使用官方推荐的docker-machine命令创建一个docker虚拟机并附加到上面,这个docker虚拟机来为你的windows系统提供docker服务。使用docker-machine命令需要用到Docker Machine,可是使用Docker Toolbox工具箱来安装docker machine工具及其他docker工具。

需要注意的是Docker Toolbox只能在windows7.1以及更高的版本上运行。下面我们介绍win7,win8安装Docker的过程:

1. 下载Docker Toolbox:https://www.docker.com/toolbox

2. 双击安装

3. 默认的安装参数

  • installs executables for the Docker tools in C:\Program Files\Docker Toolbox
  • 默认安装目录是在C:\program files\docker toolbox
  • 更新已经安装的virtualbox包
  • 在程序的快捷菜单中添加一项“Docker Inc”
  • 更新PATH环境变量
  • 创建桌面快捷方式

4. 按照安装向导进行安装

5. 安装完成

下面介绍在win7,win8中启动docker

当在win7或win8中启动一个容器,需要有这些过程:

  • 创建一个Docker虚拟机(若已经创建过,可以启动已有的虚拟机)
  • 将环境切换到虚拟机中
  • 使用docker命令来创建,加载,管理容器

实现步骤:

1. 启动cmd

2. 将ssh.exe所在目录添加到PATH变量中。ssh.exe可以在mysysgit的bin目录中找到

set PATH=%PATH%;"c:\Program Files (x86)\Git\bin"

3. 创建一个新的docker虚拟机

docker-machine create --driver virtualbox my-default Creating VirtualBox VM...
Creating SSH key... Starting VirtualBox VM... Starting VM... To see how to connect Docker to this machine, run: docker-machine env my-default

注意:上面的命令会生成一个配置文件,在C:\users\username\.docker\.machine\machines目录下。

4. 列出可用容器

C:\Users\mary> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
my-default * virtualbox Running tcp://192.168.99.101:2376

5. 为新的虚拟机获得environment命令

C:\Users\mary> docker-machine env --shell cmd my-default 

6. 连接到默认的机器

C:\Users\mary> eval "$(docker-machine env my-default)" 

7. 运行hello-world容器

C:\Users\mary> docker run hello-world

window10安装docker

1. 启用Hyper-V

打开控制面板-程序和功能-启用或关闭windows功能,勾选Hyper-V,点击确定

2.安装docker

下载地址:https://store.docker.com/editions/community/docker-ce-desktop-windows

点击“Get Docker”即可下载安装包

下载完成之后运行安装包

点击“Close and log out”,这时候需要重启电脑。

3. 运行docker

打开cmd,输入:

docker version

即可查看当前安装的docker的版本号。

输入:

docker run hello-world

输出“hello world”表示安装成功。

docker的基本概念

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

镜像

我们可以将镜像看做一个只读模式的模板,有很不同的镜像在我们需要的时候可以进行使用。比如一个Ubuntu16.04操作系统,里面仅安装Apache或用户需要的其他应用程序。

在我们实际开发中容器中会使用多个镜像,我们可以将镜像看做一堆只读层的统一视角

很多个只读层重叠在一起,除了最下面的一层,其它层都会有一个指针指向下一层,统一文件系统能够将不同的层整合成一个文件系统,为这些层提供一个同意的视角,从而隐藏了多层的存在。我们可以看到图片右边这个视角形式。

容器

docker通过容器来运行应用。

容器时镜像创建的运行实例,用户可以交互式的进行操作。每一个容器都是相互隔离的安全平台。

仓库

仓库时集中存放镜像文件的场所。

注意:仓库和仓库注册服务器并不是一个概念,仓库注册服务器旺旺存放着多个仓库,每个仓库又包含多个镜像,每个镜像通过不同的标签来区分。

仓库可以分为公开(public)仓库和私有(private)仓库两种形式。

Docker Hub

docker hub是最大的工卡仓库,它存放了很多镜像供用户pull和使用

网址:https://hub.docker.com

注意:使用docker hub需要翻墙

国内也有公开的仓库:Docker Pool

网址:http://www.dockerpool.com

用户可以在创建自己的镜像后使用push命令上传到共有或者私有仓库。在需要使用的时候从仓库pull下来就行了。

参考文章:http://wiki.jikexueyuan.com/project/docker-technology-and-combat/

https://www.cnblogs.com/bethal/p/5942369.html

docker学习篇(一) ----入门篇的更多相关文章

  1. 从零开始学习jQuery (一) 入门篇

    本系列文章导航 从零开始学习jQuery (一) 入门篇 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些 ...

  2. 腾讯QQ会员技术团队:人人都可以做深度学习应用:入门篇(下)

    四.经典入门demo:识别手写数字(MNIST) 常规的编程入门有"Hello world"程序,而深度学习的入门程序则是MNIST,一个识别28*28像素的图片中的手写数字的程序 ...

  3. STM32学习之路入门篇之指令集及cortex——m3的存储系统

    STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码        操作数1, 操作数2,... ...

  4. Java工程师学习指南(入门篇)

    Java工程师学习指南 入门篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

  5. python学习之路入门篇

    本文是up学习python过程中遇到的一些问题及总结归纳,本小节是入门篇. python基本语法 循环.分支不多赘述. 模块:一个.py文件就是一个模块. 文件和异常 模式 含义解释 “r” 读模式 ...

  6. SpringBoot 第一篇:入门篇

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10819728.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   博主从去年 ...

  7. 【腾讯Bugly干货分享】人人都可以做深度学习应用:入门篇

    导语 2016年,继虚拟现实(VR)之后,人工智能(AI)的概念全面进入大众的视野.谷歌,微软,IBM等科技巨头纷纷重点布局,AI 貌似将成为互联网的下一个风口. 很多开发同学,对人工智能非常感兴趣, ...

  8. pytest 学习笔记一 入门篇

    前言 之前做自动化测试的时候,用的测试框架为Python自带的unittest框架,随着工作的深入,发现了另外一个框架就是pytest (官方地址文档http://www.pytest.org/en/ ...

  9. 2.学习SpringMVC注解入门篇

    一.SpringMVC执行流程 . 二.创建项目学习SpringMVC注解 按照我之前的SpringMVC创建项目,首先创建一个项目springmvc01,配置好pom.xml,web.xml,spr ...

  10. Asp.Net Core学习笔记:入门篇

    Asp.Net Core 学习 基于.Net Core 2.2版本的学习笔记. 常识 像Django那样自动检查代码更新,自动重载服务器(太方便了) dotnet watch run 托管设置 设置项 ...

随机推荐

  1. spring和springmvc配置分离

    在配置springmvc的时候,我们可以把所有配置配置到springmvc的xml文件中, 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件. 但是,通常情况下 ...

  2. python note 01 计算机基础与变量

    1.计算机基础. 2.python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码. 3.pyth ...

  3. Codeforces Round #552 (Div. 3) A题

    题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...

  4. 计算a月的第b个星期c

    计算从y1到y2年a月的第b个星期c的日期 #include<iostream> using namespace std; bool isLeap(int y) { == || y%==& ...

  5. c#关于Mysql MySqlBulkLoader 批量上传

    有个list表有几万数据 用insert插入,速度跟蜗牛爬行, 几十个表,传起来可就需要时间了. 搜搜,发现有  MySqlBulkLoader  这个人家mysql 的dll 里边已经提供了这个方法 ...

  6. 3P - Snooker

    background: Philip likes to play the QQ game of Snooker when he wants a relax, though he was just a ...

  7. mybatis进阶-5resultMap总结

    resultType: 作用: 将查询结果按照sql列名pojo属性名一致性映射到pojo中. 场合: 常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用re ...

  8. 201621123002《Java程序设计》第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰 ...

  9. cookie方法封装

    将cookie封装主要是为了方便使用,可通过修改参数直接引用在其他需要的地方,不用重新写. 1.添加,删除,修改cookie /** * @param name name:cookie的name * ...

  10. javascript day 02

    js-day02 1.数据类型转换2.函数3.分支结构*******************************1.数据类型转换 数据类型:number,string,boolean,null,u ...