首页 运维 网络学院 查看内容

一条命令启动一个MySQL服务,神奇而强大的docker!

2017-1-18 15:26 2521 0

摘要: 1.容器简介因为docker最开始是基于LXC(Linux containers)所以在介绍docker的之前,先说下LXC是什么,Linux容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术。不像虚拟机(VM),容器并 ...

1.容器简介

因为docker最开始是基于LXC(Linux containers)所以在介绍docker的之前,先说下LXC是什么,Linux容器是一个在单一 Linux 主机上提供多个隔离的 Linux 环境的操作系统级虚拟技术。不像虚拟机(VM),容器并不需要运行专用的访客guest操作系统。容器们共享宿主机的host操作系统内核,并使用访客操作系统的系统库来提供所需的功能。由于不需要专用的操作系统,因此容器要比虚拟器启动快得多。

容器借助 Linux 内核的 Namespaces、Apparmor、SELinux 情景模式profile、chroot 和 CGroup 等功能来提供类似于虚拟机的隔离环境。Linux 的安全模块可以确保正确地控制容器对宿主机和内核的访问,从而避免各种入侵活动。此外,在宿主机上可以运行不同的 Linux 发行版,只要它们运行在同样的 CPU 架构下。

简单地说,容器提供的是一种基于各种 Linux 发行版创建容器镜像的方法、一套管理容器生命周期的 API、与该 API 交互的客户端工具、保存快照的功能、在宿主机之间迁移容器实例的能力等等。


2.docker简介

行业内有一个显著趋势,部署软件应用从虚拟机逐渐移到了容器。其主要的原因是容器相比于虚拟机而言更加灵活和低消耗。Google 已经使用容器技术好多年了,它在 Borg 和 Omega 容器集群管理平台上可以成规模地运行 Google 应用。并且Google 借助其在 Borg 中取得的经验,开源了一个叫做 Kubernetes 的容器集群管理系统。这套管理系统基本算是容器编排领域的领导者!而这套容器编排采用docker进行运行容器。在GitHub上,诞生没几年的Docker开源项目已经有超过3多个star,这么多年了,Linux才3万左右,可见Docker是有多火。这个新生的开源项目的发展速度真是令人咋舌,甚至有人直接把Docker和容器划上了等号。

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11本版开始,则进一步演进为使用 runC 和 containerd。

Docker火爆的原因是因为它在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。


3.docker的三个基本的概念

1).镜像

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

2).容器

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

3).仓库(Docker Registry)

各种各样的服务就会有各种各样的容器来提供,而容器又是基于镜像启动的,所以这就需要一个集中的仓库来存储、分发镜像,Docker Registry 就是这样的一个服务。镜像仓库分为公有和私有的,公有的意思就是大家都能够访问得到的,最常使用的公有镜像仓库是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。除此以外,还有 CoreOS 的 Quay.io,CoreOS 相关的镜像存储在这里;Google 的 Google Container Registry,Kubernetes 的镜像使用的就是这个仓库。私有就是自己搭建的,既然有公有的为啥么还要搭建私有仓库呢?其实第一个是公司的保密之类的原因。第二个就是因为在自己的服务器搭建的镜像仓库,push和pull镜像都比在公有仓库要快速!而一个容器编排系统最看重的就是启动容器的速度!所以一个公司基本都会有自己的私有镜像仓库。


4.实战--使用docker启动一个MySQL服务

1).安装docker

本教程是在上一篇安装好的centos7.2的环境进行的,安装docker也是非常简单,只需要输入以下命令即可yum -y install docker,如下图:

安装完成后我们需要启动一下docker,service docker start然后检查一下docker的版本,输入docker version,如下图:

如果没有执行service docker start会提示你docker是否启动了,如下:

很好,这样docker就装好啦!简单吧!下面让我们来pull一个MySQL的镜像到本地。


2).从docker registry拉取镜像

拉取一个镜像也非常简单,输入docker pull mysql/mysql-server:latest,这个命令是什么意思呢,pull代表拉取,mysql代表仓库名称,mysql-server表示镜像名称,latest表示最新的版本。如下图:

3).启动一个MySQL服务

使用docker启动一个MySQL非常简单,一条命令就完成了,输入以下命令:docker run --restart always -d --name mysql-server -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yunzhongmuge mysql/mysql-server:latest

解释一下这条命令的意思

run 运行一个容器;

--restart always 假如docker进程挂掉了,重启时把这个容器也启动起来;

-d 在后台运行

--name 这个容器的名称

-p 映射服务端口到虚拟机

-v 挂载的目录,把数据卷挂到本地,防止数据丢失

-e 设置MySQL服务root用户的密码

mysql/mysql-server 镜像名称

latest 镜像的版本号

如下图:

4).登录mysql-server

我们先把mysql 这个二进制文件从容器里面复制到本地的PATH路径,然后使用该二进制文件登录到MySQL服务,如下图:


非常好!够酷吧!启动一个MySQL只需要一条命令就好了,所以这个比用传统的方式启动MySQL的效率提升不知多少倍!好了,今天教程为啥没及时出来,就是因为在拉取镜像拉了半天!所以下一篇就是怎么搭建一个自己的docker私有仓库!本次的教程就到此结束了!good luck!

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过
1

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

  • 雷人

    匿名

最新评论

返回顶部