- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章docker上部署MySQL的示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
容器云的概念现在很火,现在很多公司都把MySQL部署在容器上,开始今天内容之前,我们先来看看容器云的概念吧.
。
要理解容器云的概念,首先需要了解容器,容器的介绍过程中,需要引入虚拟机来进行对比.
虚拟机:
VMware或者Virtual BoX这种虚拟机想必大家在日常工作中都有用到过,它是模拟计算机操作系统的软件,你可以在windows计算机上安装Virtual BoX软件,然后在Virtual Box上安装Centos或者Ubuntu这种Linux操作系统,从而在一台机器上运行多种类型的多个操作系统,让我们开发测试工作变得很方便.
虚拟机的缺点是需要消耗大量资源,每个虚拟机都需要单独分配内存和磁盘空间,还要消耗CPU资源以及很多底层硬件资源,如果你只是在上面用程序跑了一个hello world,那么会造成资源的大量浪费.
容器:
容器的出现,就是为了解决这个问题,它是一种更加轻量,更加灵活的虚拟化处理技术,它将一个应用程序所需要的所有资源打包在一起,包含应用程序的code源码、依赖库以及操作系统,这让应用程序在任何地方都可以轻易的运行,不再受到环境的制约.
和虚拟机相比,容器更加轻量、可移植性更好、成本更低,更高效.
容器云可以理解为云上的容器技术服务.
。
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-utilsyum install-y device-mapper-persistent-datayum 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 用户组,但该用户组下没有用户.
。
使用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 -ltotal 72drwxr-xr-x 1 root root 4096 Nov 8 2016 bindrwxr-xr-x 2 root root 4096 Sep 12 2016 bootdrwxr-xr-x 5 root root 360 Aug 11 11:41 devdrwxr-xr-x 2 root root 4096 Nov 8 2016 docker-entrypoint-initdb.dlrwxrwxrwx 1 root root 34 Nov 23 2016 entrypoint.sh -> usr/local/bin/docker-entrypoint.shdrwxr-xr-x 1 root root 4096 Aug 11 11:41 etcdrwxr-xr-x 2 root root 4096 Sep 12 2016 homedrwxr-xr-x 1 root root 4096 Nov 8 2016 libdrwxr-xr-x 2 root root 4096 Nov 4 2016 lib64drwxr-xr-x 2 root root 4096 Nov 4 2016 mediadrwxr-xr-x 2 root root 4096 Nov 4 2016 mntdrwxr-xr-x 2 root root 4096 Nov 4 2016 optdr-xr-xr-x 104 root root 0 Aug 11 11:41 procdrwx------ 1 root root 4096 Aug 11 11:49 rootdrwxr-xr-x 1 root root 4096 Nov 8 2016 rundrwxr-xr-x 2 root root 4096 Nov 4 2016 sbindrwxr-xr-x 2 root root 4096 Nov 4 2016 srvdr-xr-xr-x 13 root root 0 Jul 19 02:47 sysdrwxrwxrwt 1 root root 4096 Aug 11 11:41 tmpdrwxr-xr-x 1 root root 4096 Nov 23 2016 usrdrwxr-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.1mysql: [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 16Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.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 psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe5e0f9a14462 mysql:5.7.16 "docker-entrypoint.s…" 8 seconds ago Up 6 seconds 0.0.0.0:3307->3306/tcp mysql_5716_28c388ccfb761 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的资料请关注我其它相关文章! 。
最后此篇关于docker上部署MySQL的示例的文章就讲到这里了,如果你想了解更多关于docker上部署MySQL的示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
目前我正在构建相当大的网络系统,我需要强大的 SQL 数据库解决方案。我选择 Mysql 而不是 Postgres,因为一些任务需要只读(MyISAM 引擎)而其他任务需要大量写入(InnoDB)。
我在 mysql 中使用如下命令。当它显示表格数据时,它被格式化为一个非常干净的表格,间距均匀且 |作为列分隔符。 SELECT * FROM TABLE_NAME; 当我从 CLI 运行命令时,如下
我知道这个问题之前已经被问过好几次了,我已经解决了很多问题,但到目前为止没有任何效果。 MySQL 试图将自身安装到的目录 (usr/local/mysql) 肯定有问题。关于我的错误的奇怪之处在于我
以下是我的 SQL 数据结构,我正在尝试如下两个查询: Select Wrk_ID, Wrk_LastName, Skill_Desc from Worker, Skill where
我们有一个本地 mysql 服务器(不在公共(public)域上),并希望将该服务器复制到我们拥有的 google 云 sql 实例。我的问题是:1.这可能吗?2.我们的本地服务器只能在本地网络上访问
我有一个表(test_table),其中一些字段值(例如字段 A、B 和 C)是从外部应用程序插入的,还有一个字段(字段 D),我想从现有表(store_table)插入其值,但在插入前者(A、B 和
我想创建一个 AWS RDS 实例,然后使用 terraform 管理数据库用户。因此,首先,我创建了一个 RDS 实例,然后使用创建的 RDS 实例初始化 mysql 提供程序,以进一步将其用于用户
当用户在我的网站上注册时,他们会在我的一个数据库中创建自己的表格。该表存储用户发布的所有帖子。我还想做的是也为他们生成自己的 MySql 用户——该用户仅有权从他们的表中读取、写入和删除。 创建它应该
我有一个关于 ColdFusion 和 Mysql 的问题。我有两个表:PRODUCT 和 PRODUCT_CAT。我想列出包含一些标记为:IS_EXTRANET=1 的特殊产品的类别。所以我写了这个
我想获取 recipes_id 列的值,以获取包含 ingredient_id 的 2,17 和 26 条目的值。 假设 ingredient_id 2 丢失则不获取记录。 我已经尝试过 IN 运算符
在 Ubuntu 中,我通常安装两者,但 MySQL 的客户端和服务器之间有什么区别。 作为奖励,当一个新语句提到它需要 MySQL 5.x 时,它是指客户端、服务器还是两者兼而有之。例如这个链接ht
我重新访问了我的数据库并注意到我有一些 INT 类型的主键。 这还不够独特,所以我想我会有一个指导。 我来自微软 sql 背景,在 ssms 中你可以 选择类型为“uniqeidentifier”并自
我的系统上有 MySQL,我正在尝试确定它是 Oracle MySQL 还是 MySQL。 Oracle MySQL 有区别吗: http://www.oracle.com/us/products/m
我是在生产 MySQL 中运行的应用程序的新维护者。之前的维护者已经离开,留下的文档很少,而且联系不上了。 我面临的问题是执行以下请求大约需要 10 秒: SELECT COUNT(*) FROM `
我有两个位于不同机器上的 MySQL 数据库。我想自动将数据从一台服务器传输到另一台服务器。比方说,我希望每天早上 4:00 进行数据传输。 可以吗?是否有任何 MySQL 内置功能可以让我们做到这一
有什么方法可以使用 jdbc 查询位于 mysql 根目录之外的目录中的 mysql 表,还是必须将它们移动到 mysql 根目录内的数据库文件夹中?我在 Google 上搜索时没有找到任何东西。 最
我在 mysql 数据库中有两个表。成员和 ClassNumbers。两个表都有一个付费年份字段,都有一个代码字段。我想用代码数字表中的值更新成员表中的付费年份,其中成员中的代码与 ClassNumb
情况:我有 2 台服务器,其中一台当前托管一个实时 WordPress 站点,我希望能够将该站点转移到另一台服务器,以防第一台服务器出现故障。传输源文件很容易;传输数据库是我需要弄清楚如何做的。两台服
Phpmyadmin 有一个功能是“复制数据库到”..有没有mysql查询来写这个函数?类似于将 db A 复制到新的 db B。 最佳答案 首先创建复制数据库: CREATE DATABASE du
我有一个使用 mySQL 作为后端的库存软件。我已经在我的计算机上对其进行了测试,并且运行良好。 当我在计算机上安装我的软件时,我必须执行以下步骤: 安装 mySQL 服务器 将用户名指定为“root
我是一名优秀的程序员,十分优秀!