什么是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. poj 2349 求最小生成树里面第m长的边

    题目链接:https://vjudge.net/problem/POJ-2349 题意: 题目就是要我们找到一个最小的值D,把图里面所有大于D的边去掉之后剩余的连通分支的数量为S.这个就是找这个图里面 ...

  2. MYSQL、SQL在LIKE里传的参数没有赋进去的原因

    SQL语句 = string.Format(" where name like '%@key%' "); para.Add(new MySqlParameter("@ke ...

  3. Web前端(整理不好,自己未学)

    1.公司招聘信息 (1)小公司 (2)腾讯 ①社会招聘 ②校园招聘 (3)百度 ①社会招聘 ②实习 ③校园招聘 2.岗位要求 开发经验,良好的编程习惯,学习能力,至少二个项目开发设计,具备需求功能模块 ...

  4. php Pthread 线程 互斥锁

    在进行并发操作时,会导致共享数据的完整性的问题,要加入锁,在任意时刻只有一个线程访问该对象在PHP中定义专门用于线程同步控制的mutex的函数, pthreads v3 中已经将 Mutex 类移除. ...

  5. Math的方法;Date的方法;

    Math的方法: (1)弧度的π  Math.PI() (2)返回平方根 Math.sqrt() (3)返回x的绝对值 Mathabs(x) (4)返回x的上舍入 Math.ceil(x) (5)返回 ...

  6. PostFix添加多个端口

    /usr/local/*/config/postfix/master.cf 在/etc/services中搜索smtp,复制,添加smtp2<与上面一步对应起来的服务名>,后面为需要添加的 ...

  7. javascript的异步编程

    同步与异步 介绍异步之前,回顾一下,所谓同步编程,就是计算机一行一行按顺序依次执行代码,当前代码任务耗时执行会阻塞后续代码的执行. 同步编程,即是一种典型的请求-响应模型,当请求调用一个函数或方法后, ...

  8. String 常用函数

    判断字符串是否包含指定字符str.contains("string"); 查找指定字符索引str.indexOf("s"'); 查找最后出现的字符索引str.i ...

  9. 《Miracle_House团队》第一次作业:团队亮相

    Our Team:Miracle_House part 1 团队成员组成: NO.1  汝春瑞   201571030125   (组长) Style:乐观开朗,认真踏实,责任心强,还有就是爱笑.随和 ...

  10. Web API使用HttpResponseMessage与HttpResponseException的差异 HttpResponseMessage 返回类型

    在 Web API 中提供了 HttpResponseMessage 与 HttpResponseException 用于处理返回讯息,HttpResponseMessage 用于返回一个来自于客户端 ...