本文主要讨论使用Docker快速启动 MySQL 测试的方法,包括Mac环境。一起看看吧!
近来业界有很多对Docker的讨论,其生态系统发展得很快,然而,从简单的“入门”或“引导”类的文章中能容易地找到成熟的技术,但Docker不然。我在Mac上试玩过Docker,但Mac绝对是Docker界的二等公民。当我在Giuseppe的博客上看到关于在Mac上使用新Docker beta《Docker for Mac beta and MySQL》一文时,决定自己来尝试下。这些步骤适用于Mac(Windows也可能),亦能适配Linux环境(GA版本,Docker 1.11.1)。
首先,在Mac上注册新的Docker测试版程序,接着从Docker中获得下载代码。此过程我耗时一天,但应该不久就会发布完整版。安装完成后,我需要为常见的MySQL版本设置一些Docker容器,沙箱也就有了。方法如下:
jayj@~ [510]$ docker network create test90005b3ffa9fef1f817ee4965e794a567404c9a8d5bf07320514e7d848d59ff9jayj@~ [511]$ docker run --name=mysql57 --net=test -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql/mysql-server:5.76c80fa89610dbd5418ba474ad7d5451cd061f80a8a72ff2e718341827a08144bjayj@~ [512]$ docker run -it --rm --net=test -e MYSQL_HOST=mysql57 mysql/shell initCreating a Classic Session to root@mysql57:3306Enter password:No default schema selected.enableXProtocol: Installing plugin mysqlx...enableXProtocol: done
一些经验总结:
我为我的容器创建了一个名为“测试”的网络以共享,本质是容器之间一个专用的私有网络。我喜欢这个是因为在相关的端口是监听多个容器,也不必设置主机操作系统的端口。
我将Oracle的官方MySQL Docker容器启动一个MySQL 5.7的镜像,在绑定到该测试网络。我使用了MySQL /shell镜像(来自Oracle)来初始化MySQL 5.7服务器上的mysqlx插件。需要注意的是,我并没有输入密码,因为我没有创建一个服务器(不安全,但它是一个沙箱)。
这个里面的Shell使用了运行后删除的临时容器,所以并不会破坏Docker ps-a输出。所以,现在我希望能够使用标准的MySQL命令行或新的MySQL shell来访问这个容器。让它看起来很干净,因此我添加了一些bash别名:
alias mysqlsh='docker run -it --rm --net=test mysql/shell'alias mysql='docker run -it --rm -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --net=test --entrypoint="mysql" mysql/mysql-server:5.7'
这些以后,我可以直接调用他们并通过正常的命令行选项来连接我的MySQL 5.7镜像,就像使用的是一个原生的MySQL CLI binary。从MySQL 5.7镜像中使用MySQL CLI:
jayj@~ [524]$ mysql -h mysql57Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 4Server version: 5.7.12 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 schemas;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.01 sec)
使用MySQL shell:
jayj@~ [527]$ mysqlsh -h mysql57 -u root --session-type=nodeCreating a Node Session to root@mysql57:33060Enter password:No default schema selected.Welcome to MySQL Shell 1.0.3 Development PreviewCopyright (c) 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', 'h' or '?' for help.Currently in JavaScript mode. Use sql to switch to SQL mode and execute queries.mysql-js> sqlSwitching to SQL mode... Commands end with ;mysql-sql> show schemas;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys |+--------------------+4 rows in set (0.00 sec)mysql-sql>
新闻热点
疑难解答
图片精选