前话

问题

  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. 在Eclipse中制作SSH配置文件提示插件

    原文地址:http://blog.csdn.net/longyuhome/article/details/8968093 这篇博客算是对原先的“在Eclipse中制作和使用struts2配置文件提示插 ...

  2. 将SQLServer结果导出为excel文件

    相信大家常常会遇到将SqlServer查询结果导出到Excel的问题.如果导出的次数少,直接“Save Results As...”就是了:但是当要分别在每个表取样,那就相当麻烦了.今天就为大家提供一 ...

  3. 软件工程课后作业——四则运算Ⅲ(C++)

    一.设计思路 题目:可以答题并判断对错,最后显示做对几道题. 在原有的基础上,又拓展了答题模块. 在结构体中添加了answer属性,把输入的答案与正确答案比较,若相等则计数加一. 二.源代码 (1)四 ...

  4. java7新特新(一) Try-with-resources (TWR)

    Try-with-resources (TWR) 在处理IO的代码中,我们会使用大量的try...catch()...finally...语法,其中会在finally进行IO的close操作,写过py ...

  5. Object常用方法

    1.clone() 创建并返回对象的一个副本,要进行“克隆”的对象所属的类必须实现java.lang.Cloneable接口 2.equals() 功能:比较引用数据类型的等价性 等价标准:引用类型比 ...

  6. 关于Liferay所有的能够进行自定义和扩展的东西的总结

    非常超级什么有用的东西,amazing. 虽然不是宝宝写的. Fantastic Extension Points - And Where to Find Them

  7. Oracle VM VirtualBox 5.0 CentOS 6.4 共享文件夹

    首先在主机(win7)的硬盘建立需要共享文件夹 例如 D:\share_test 然后虚拟机光驱加载Oracle VM VirtualBox安装目录的iso  C:\Program Files\Ora ...

  8. Google Guava学习笔记——基础工具类Splitter的使用

    另一项经常对字符串的操作就是根据指定的分隔符对字符串进行分隔.我们基本上会使用String.split方法: String testString = "Monday,Tuesday,,Thu ...

  9. map初始化定时器

    init_timer(); //各种定时器的初始化 void Map::init_timer() { //auto tf = GetPlug(TimerFactory); auto tf = m_sp ...

  10. 数据分页 THINKPHP3.2 分页 三种分页方法

    数据分页 复制本页链接 opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例. 第一种:利用Page类和limit方 ...