docker上部署MySQL的示例

容器云的概念现在很火,现在很多公司都把MySQL部署在容器上,开始今天内容之前,我们先来看看容器云的概念吧。

1 容器云是什么?

要理解容器云的概念,首先需要了解容器,容器的介绍过程中,需要引入虚拟机来进行对比。

虚拟机:

VMware或者Virtual BoX这种虚拟机想必大家在日常工作中都有用到过,它是模拟计算机操作系统的软件,你可以在windows计算机上安装Virtual BoX软件,然后在Virtual Box上安装Centos或者Ubuntu这种Linux操作系统,从而在一台机器上运行多种类型的多个操作系统,让我们开发测试工作变得很方便。

虚拟机的缺点是需要消耗大量资源,每个虚拟机都需要单独分配内存和磁盘空间,还要消耗CPU资源以及很多底层硬件资源,如果你只是在上面用程序跑了一个hello world,那么会造成资源的大量浪费。

容器:

容器的出现,就是为了解决这个问题,它是一种更加轻量,更加灵活的虚拟化处理技术,它将一个应用程序所需要的所有资源打包在一起,包含应用程序的code源码、依赖库以及操作系统,这让应用程序在任何地方都可以轻易的运行,不再受到环境的制约。

和虚拟机相比,容器更加轻量、可移植性更好、成本更低,更高效。

容器云可以理解为云上的容器技术服务。

2 docker简介

docker是一个开源的应用容器引擎,我们可以将它理解为一个工具,它基于go语言开发,并且兼容apache2.0协议,它可以将应用程序及其依赖(如配置文件等)打包到容器中。

除此之外,它兼容多种环境,可以被部署在在笔记本电脑,内部服务器,公共云或私有云,可移植性很好,部署也非常灵活,解决了多种环境下的兼容性问题。

Docker 包括三个基本概念:

镜像(Image)
容器(Container)
仓库(Repository)

这三部分组成了Docker的整个生命周期,如上图所示。

docker镜像包含了文件系统,类似于虚拟机的镜像,它是只读的模板。

docker容器是由镜像实例化而来的,这和我们学习的面向对象的概念十分相似,我们可以把镜像想象成类,把容器想象成类经过实例化后的对象,这样就非常好理解镜像和容器的关系了。

docker仓库:类似与代码仓库,是Docker集中存放镜像文件的场所

这个关系可以更加清楚的表述为:

下面我们来看docker的安装:

1、安装所需要的软件包,其中yum-utils 提供了 yum-config-manager  ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2

yum install-y  yum-utils
yum install-y  device-mapper-persistent-data
yum install-y  lvm2

2、设置稳定的docker仓库

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装Docker Engine-Community、

yum install docker-ce docker-ce-cli cotainerd.io

此时,Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。

3 使用docker安装MySQL

使用docker安装mysql服务非常简单,总体步骤就下面几步:

1、下载MySQL镜像

可以登录到docker的官方仓库中寻找mysql的镜像,网址如下:https://hub.docker.com/_/mysql?tab=tags

也可以直接使用docker的命令去下载MySQL镜像

yum pull mysql:5.7.16

上面的命令表示我们要下载MySQL5.7.16的镜像。如果我们不写最后的版本号,则默认拉取最新的MySQL版本镜像

2、启动MySQL。

拉取完毕之后,我们可以通过下面的命令来启动MySQL实例:

docker run -itd --name mysql_5716 -p 3306:3306  -e MYSQL_ROOT_PASSWORD=yeyazhou mysql_5716

其中:

-i:以交互模式运行容器

-t:为容器重新分配一个伪输入终端

-d:后台运行容器

-p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。

MYSQL_ROOT_PASSWORD=yeyazhou:设置 MySQL 服务 root 用户的密码。

3、查看容器的运行状态

container id:容器的id号

其他信息包括容器的源镜像,创建时间,状态,端口映射信息,容器名字等。

4、进入容器查看

首先我们使用命令进入容器的交互式命令行:

docker exec -it mysql_5716 /bin/bash

运行结果如下

root@8c388ccfb761:/# ls -l
total 72
drwxr-xr-x   1 root root 4096 Nov  8  2016 bin
drwxr-xr-x   2 root root 4096 Sep 12  2016 boot
drwxr-xr-x   5 root root  360 Aug 11 11:41 dev
drwxr-xr-x   2 root root 4096 Nov  8  2016 docker-entrypoint-initdb.d
lrwxrwxrwx   1 root root   34 Nov 23  2016 entrypoint.sh -> usr/local/bin/docker-entrypoint.sh
drwxr-xr-x   1 root root 4096 Aug 11 11:41 etc
drwxr-xr-x   2 root root 4096 Sep 12  2016 home
drwxr-xr-x   1 root root 4096 Nov  8  2016 lib
drwxr-xr-x   2 root root 4096 Nov  4  2016 lib64
drwxr-xr-x   2 root root 4096 Nov  4  2016 media
drwxr-xr-x   2 root root 4096 Nov  4  2016 mnt
drwxr-xr-x   2 root root 4096 Nov  4  2016 opt
dr-xr-xr-x 104 root root    0 Aug 11 11:41 proc
drwx------   1 root root 4096 Aug 11 11:49 root
drwxr-xr-x   1 root root 4096 Nov  8  2016 run
drwxr-xr-x   2 root root 4096 Nov  4  2016 sbin
drwxr-xr-x   2 root root 4096 Nov  4  2016 srv
dr-xr-xr-x  13 root root    0 Jul 19 02:47 sys
drwxrwxrwt   1 root root 4096 Aug 11 11:41 tmp
drwxr-xr-x   1 root root 4096 Nov 23  2016 usr
drwxr-xr-x   1 root root 4096 Nov  8  2016 var

可以看到进入了容器交互式命令行。前面的root@8c388ccfb761中@符号后面的字符串就是我们的容器ID。

5、使用连接串连接MySQL

root@8c388ccfb761:/usr/local# mysql -uroot -pyeyazhou -h127.0.0.1
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.16 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

6、启动另外一个MySQL容器

[root@VM-0-14-centos ~]# docker run -itd -p 3307:3306 --name mysql_5716_2 -e MYSQL_ROOT_PASSWORD=yeyazhou  mysql:5.7.16  
e5e0f9a14462261d01307c4d0891587acce90e4ffd33e434878f311bf98d4f22

[root@VM-0-14-centos ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
e5e0f9a14462        mysql:5.7.16        "docker-entrypoint.s…"   8 seconds ago       Up 6 seconds        0.0.0.0:3307->3306/tcp   mysql_5716_2
8c388ccfb761        mysql:5.7.16        "docker-entrypoint.s…"   25 hours ago        Up 25 hours         0.0.0.0:3306->3306/tcp   mysql_5716

以上就是docker上部署MySQL的示例的详细内容,更多关于docker上部署MySQL的资料请关注我们其它相关文章!

(0)

相关推荐

  • 阿里云esc服务器Docker部署单节点Mysql的讲解

    1.下载加速版msyql   docker pull hub.c.163.com/library/mysql:5.7 2.更名 docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7 3.启动 docker run -it --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql 4.设置mysql远程登录 docker exec -it mysql bash my

  • 详解如何使用Docker部署Django+MySQL8开发环境

    前一段时间重装了系统,然后我还没有备份,导致电脑里的开发环境全都没有了. 一想到又要装 Python 环境,还要装数据库,然后安装过程中还可能报一堆错就头疼. 最近正在学习 Docker,这不正好解决了我当前的痛点了吗?而且,不止这次重装系统,以后再重装都不怕了,只要拿着 Dockerfile 和 docker-compose 文件,不管到什么环境,一条命令轻松跑起来. 之前部署 Python 开发环境,都是用的 virtualenv,或者是 Pipenv.这次使用 Docker 之后,对比下来

  • Docker部署mysql远程连接 解决2003的问题

    连接MySQL 这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙. 开放端口 firewall-cmd --add-port=3306/tcp --permanent // --permanent 永久生效,没有此参数重启后失效 firewall-cmd --reload // 重新载入 关闭防火墙 systemctl stop firewalld systemctl enable iptables // 设置开机启动 firewall-cmd --reload

  • 使用Docker部署MySQL 5.7&8.0主从集群的方法步骤

    > 部署 MySQL 5.7 集群 master & slave (仅测试用) 镜像版本 5.7 1.创建 overlay 网络 docker network create --driver overlay common-network --attachable 2.编辑两个配置文件 master.cnf 与 slave.cnf !includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ [mysqld] log-b

  • 详解使用Docker部署MySQL(数据持久化)

    本文简述如何使用Docker部署mysql,同时持久化数据.我们会用到tutum-docker-mysql 这个项目来搭建一个mysql,省去重头写Dockerfile的时间. 首先我们将tutum-docker-mysql跑起来. docker run -d -p 3306:3306 --name mysql tutum/mysql 如果你本地没有tutum/mysql的image,docker会先下载它的image,这一步可能会用些时间.待执行完毕我们检查一下应该会有如下样子 tutum-d

  • Docker 部署 Mysql8.0的方法示例

    1. 参照官网,安装docker 2.拉取mysql镜像 (默认拉取最新的镜像)8.0.11 docker pull mysql 3.在宿主机创建持久化 mysql data 及mysql.cnf mkdir /usr/local/mysqlData/test/cnf mkdir /usr/local/mysqlData/test/data vi /usr/loal/mysqlData/test/cnf/mysql.cnf 设置本地文件共享: Docker -> Preferences... -

  • Docker部署Mysql集群的实现

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信红包巨大业务量,数据库承受巨大负载 常见MySQL集群方案 mysql 集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b 节点数据库显示没有成功,这就麻烦了,pxc 方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication

  • docker-compose基于MySQL8部署项目的实现

    1.首先按照以下的路径创建相应的文件夹 /usr/local/docker/mysql 2.然后在该目录下创建docker-compose.yml文件并且在文件中加入以下的配置 version: '3.1' services: db: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: 123456 command: --default-authentication-plugin=mysql_native_password

  • Docker部署Django+Mysql+Redis+Gunicorn+Nginx的实现

    一. 前言 docker技术现在非常火热,通过容器构建项目环境,运行效率和部署效率都很不错.所以最近抽空看了一些教程,然后将博客部署方式改为了docker,感觉网上没有特别好的关于 docker 部署 django 项目的教程,特意写了这篇文章,算是记录自己的心得. 本次教程的测试环境为 Deepin ,主要侧重于 容器的编排 和 Django 相关部署知识,一些细节方面,例如环境依赖安装,不会讲得特别详细.由于是在本地测试,所以在配置 nginx 相关信息时,将配置 http 代理而非 htt

  • docker部署mysql 实现远程连接的示例代码

    1.docker search mysql   查看mysql版本 2.docker pull mysql  要选择starts最高的那个name 进行下载 3.docker images  查看下载好的镜像 4.启动mysql实例 docker run --name dockermysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql  --name 为mysql的实例设置别名. -p 3307为对外暴露的端口.3306是内

  • Docker 部署Mysql 服务和Redis 服务的方法

    Docker 部署Mysql 服务的方法 1. 拉取Mysql 5.6最新版本镜像 sudo docker pull mysql:5.6 2. 查看Mysql 镜像 sudo docker images 3. 在home目录下创建需要映射的目录: mkdir -p /home/computer/project/mysql/{conf,log,data} 4. 运行容器 duso docker run -p 53603:3306 --name iot-mysql \ -v /home/comput

随机推荐