前话

问题

  1. 开发网站需要搭建服务器环境,翻墙官网下载软件包,搭建配置nginx,apache,数据库等。官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步骤或者配置详情还得查看英文文档,总之十分繁琐。

  2. 租了个服务器,配置一般七八十块钱一个月,只运行了一个网站或者几个服务就差不多满负荷了,感觉好浪费。


新解决思路

以上两个是比较主要的问题,环境搭建繁琐,通过传统方式搭建服务器由于系统本身导致的性能浪费。
作为开发者最希望看到的是能简单就简单,能省钱就省钱,那么有没有相关技术解决这类问题呢?
当然有,就是Docker了,追溯它的历史嘛它相关概念出现在十几年前,更多详情也请谷歌。
直到2013年Docker正式发行,它就以惊人之势被人广为所知,因为现在市场十分需要它,就跟大数据一样。
因此,阿里云、腾讯云、新浪云、什么云什么云等都推出了Docker容器服务。

下面开始介绍Docker吧。


Docker初步认识

介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

Docker官网传送门,详解请点击我


虚拟机?容器引擎?

下面这样图可以很好的解释:

我们租的云服务器其实就是租了某企业集群运行的一个虚拟机,运行一个系统,我们可以进行系统相关操作。
很多时候我们并不需要系统,我们只想运行一个应用程序提供服务,因此上图右边图示就可以看出来,容器引擎的优势了,我们只是给容器引擎添加了一个容器应用,相关开销就小了许多。


镜像和容器

Docker有许多新概念,详情请自行官网阅读文档,我就只简单说一下两个,镜像和容器。

在Docker中

  • 镜像类似编程的类
  • 不同软件服务镜像和系统镜像是子类和父类的关系,类似编程的类的继承
  • 容器类似编程里的实例。

CentOS系统运行着Docker引擎,Docker引擎要启动一个新的容器首先要有镜像。

镜像就是一个搭建好的一个运行环境的模板,每个镜像本质是依赖底层的系统。比如,因为linux系统内核一样,ubuntu镜像里只是包含一些ubuntu系统特有文件,再链接底层系统内核达到构成一个新的系统。

在ubuntu镜像里增加MySQL服务,它就变成了MySQL镜像,也就是说MySQL镜像是继承了ubuntu镜像

通过这个模板启动一个容器,这个容器就是镜像的实例

理解这两个概念,我们可以开始安装Docker和进行简单实例了。


Docker安装并启动简单实例(Linux-CentOS)

安装方法

1.直接yum安装(此方法安装的Docker可能不是最新版)

$ sudo yum install -y docker

2.官网安装方式,传送门

Log into your Ubuntu installation as a user with sudo privileges.

Verify that you have curl installed.

$ which curl

If curl isn’t installed, install it after updating your manager:

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

Get the latest Docker package.

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

此方法需要等待一段时间(毕竟穷没翻墙),失败就重新几次。

注意,如果不是root用户,我们需要将登陆用户添加到docker用户组,例如:

$ sudo usermod -aG docker pwc

启动Docker容器引擎

启动

$ sudo systemctl start docker

验证docker启动

$ sudo systemctl status docker

输出active说明启动没问题。


查看docker状态

$ sudo docker info

到这里Docker基本安装成功。


简单实例

输入以下命令:

$ sudo docker run hello-world

在输出中可以看到docker先查看是否存在hello-world镜像

若不存在会自动下载,然后创建一个hello-world容器并运行

查看容器运行状态:

$ sudo docker ps

因为hello-world容器是输出一些信息后自动关闭,因此容器列表为空,我无法讲解其他一些知识,请期待下一章节。

查看镜像列表:

$ sudo docker images

可以看到我们刚才自动下载了hello-world镜像

查看其他Docker命令:

$ sudo docker -h

Docker初步认识安装和简单实例的更多相关文章

  1. Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    目录 [TOC] 1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0. ...

  2. [转载] Centos7的安装、Docker1.12.3的安装,以及Docker Swarm集群的简单实例

    1.环境准备 ​ 本文中的案例会有四台机器,他们的Host和IP地址如下 c1 -> 10.0.0.31 c2 -> 10.0.0.32 c3 -> 10.0.0.33 c4 -&g ...

  3. Django学习笔记(一):环境安装与简单实例

    Django学习笔记(一):环境安装与简单实例 通过本文章实现: Django在Windows中的环境安装 Django项目的建立并编写简单的网页,显示欢迎语与当前时间 一.环境安装 结合版本兼容性等 ...

  4. Docker的下载安装以及简单使用

    Docker的简介 Docker是一个基于GO语言开发的应用容器,它是一款适合运维人员和后段开发人员学习的开源容器引擎.Docker容器可以让开发的应用或者依赖包存储其中,可以运行在任何的Linux ...

  5. MinGW 安装与简单实例

    MinGW的下载 链接: https://pan.baidu.com/s/1JiZoyFHUWoeaxCQcUXCKgg 密码: myh3 MinGW的安装 基本上都是按提示的点击下一步操作 接下来修 ...

  6. Docker入门之安装与简单使用操作

    1.docker安装 #1.检查内核版本,必须是3.10及以上 uname -r #2.安装 yum -y install docker 2.docker简单使用 #1.启动docker system ...

  7. PyQt5 安装及简单实例 -- 标签设置

    - 1 -    PyQt5安装,鉴于pip工具,安装其实很简单, 如下:(最好将pip索引配置成国内镜像,速度比默认的快得多) pip3 isntall PyQt5 - 2 -    利用Pycha ...

  8. centos mongodb安装及简单实例

    1.创建目录并设置写权限的操作如下: $mkdir -p /data/db (创建目录和必要的父目录,若父目录不存在则先创建父目录再创建子目录) $ chown -R $usergroup:$user ...

  9. Docker windows下安装并搭建Nodejs的webapp

    一.关于Docker 什么是Docker?Docker 采用go语言编写,是一个开源的应用容器引擎.让开发者可以快速打包他们的应用以及依赖包到一个封装的可移植的容器Image中,然后发布到任何流行的机 ...

随机推荐

  1. UIWebView swift

    // // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...

  2. HTML5-地理定位

    HTML5 Geolocation(地理定位)用于定位用户的位置. 定位用户的位置 HTML5 Geolocation API 用于获得用户的地理位置. 鉴于该特性可能侵犯用户的隐私,除非用户同意,否 ...

  3. Android -- TouchEvent的分发和截获方式

    Android系统中的每个ViewGroup的子类都具有下面三个和TouchEvent处理密切相关的方法: public boolean dispatchTouchEvent(MotionEvent ...

  4. 【Minimum Depth of Binary Tree】cpp

    题目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the ...

  5. 异步FIFO为什么用格雷码

    异步FIFO通过比较读写地址进行满空判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理,将写地址同步到读时钟域再和读地址比较进行FIFO空状态判断(同步后的写地址一定是小于 ...

  6. 基于ArcEngine的空间数据通用建库软件介绍

    最近花了点时间把之前的空间数据入库功能进行了完善,在这里做一个简单的介绍,也希望大家给提点意见和建议,我的目标是做一个好用.易用.通用.稳定的入库程序. 1.软件特点: 基于模板(方案)的数据更新   ...

  7. 利用doScroll在IE浏览器里模仿DOMContentLoaded

    稍微了解一点框架的事件绑定的都知道 window.onload 事件需要在页面所有内容(包括图片.flash.iframe等)加载完后,才执行,但往往我们更希望在 DOM 一加载完就执行脚本,而各大框 ...

  8. codeforces 22E XOR on Segment 线段树

    题目链接: http://codeforces.com/problemset/problem/242/E E. XOR on Segment time limit per test 4 seconds ...

  9. 使用HTML5中的element.dataset操作自定义data-*数据

    不久之前我向大家展示了非常有用的classList API,它是一种HTML5里提供的原生的对页面元素的CSS类进行增.删改的接口,完全可以替代jQuery里的那些CSS类操作方法.而另外一个非常有用 ...

  10. __int64 与long long 的区别 分类: Brush Mode 2014-08-14 10:22 64人阅读 评论(0) 收藏

    //为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int    ...