Docker初步认识安装和简单实例

前话

问题

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

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


新解决思路

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

下面开始介绍Docker吧。


Docker初步认识

介绍

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

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


虚拟机?容器引擎?

下面这样图可以很好的解释:
Docker初步认识安装和简单实例

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


镜像和容器

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初步认识安装和简单实例

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

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

查看容器运行状态:

$ sudo docker ps

Docker初步认识安装和简单实例

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

查看镜像列表:

$ sudo docker images

Docker初步认识安装和简单实例

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

查看其他Docker命令:

$ sudo docker -h
上一篇:ModuleNotFoundError: No module named 'sqlite'


下一篇:OpenGl 知识一