Mac上使用Docker如何快速启动MySQL测试
本文主要讨论使用Docker快速启动MySQL测试的方法,包括Mac环境。一起看看吧!
近来业界有很多对Docker的讨论,其生态系统发展得很快,然而,从简单的“入门”或“引导”类的文章中能容易地找到成熟的技术,但Docker不然。我在Mac上试玩过Docker,但Mac绝对是Docker界的二等公民。当我在Giuseppe的博客上看到关于在Mac上使用新Dockerbeta《DockerforMacbetaandMySQL》一文时,决定自己来尝试下。这些步骤适用于Mac(Windows也可能),亦能适配Linux环境(GA版本,Docker1.11.1)。
首先,在Mac上注册新的Docker测试版程序,接着从Docker中获得下载代码。此过程我耗时一天,但应该不久就会发布完整版。安装完成后,我需要为常见的MySQL版本设置一些Docker容器,沙箱也就有了。方法如下:
jayj@~[510]$dockernetworkcreatetest 90005b3ffa9fef1f817ee4965e794a567404c9a8d5bf07320514e7d848d59ff9 jayj@~[511]$dockerrun--name=mysql57--net=test-eMYSQL_ALLOW_EMPTY_PASSWORD=yes-dmysql/mysql-server:5.7 6c80fa89610dbd5418ba474ad7d5451cd061f80a8a72ff2e718341827a08144b jayj@~[512]$dockerrun-it--rm--net=test-eMYSQL_HOST=mysql57mysql/shellinit CreatingaClassicSessiontoroot@mysql57:3306 Enterpassword: Nodefaultschemaselected. enableXProtocol:Installingpluginmysqlx... enableXProtocol:done
一些经验总结:
我为我的容器创建了一个名为“测试”的网络以共享,本质是容器之间一个专用的私有网络。我喜欢这个是因为在相关的端口是监听多个容器,也不必设置主机操作系统的端口。
我将Oracle的官方MySQLDocker容器启动一个MySQL5.7的镜像,在绑定到该测试网络。
我使用了MySQL/shell镜像(来自Oracle)来初始化MySQL5.7服务器上的mysqlx插件。需要注意的是,我并没有输入密码,因为我没有创建一个服务器(不安全,但它是一个沙箱)。
这个里面的Shell使用了运行后删除的临时容器,所以并不会破坏Dockerps-a输出。
所以,现在我希望能够使用标准的MySQL命令行或新的MySQLshell来访问这个容器。让它看起来很干净,因此我添加了一些bash别名:
aliasmysqlsh='dockerrun-it--rm--net=testmysql/shell' aliasmysql='dockerrun-it--rm-eMYSQL_ALLOW_EMPTY_PASSWORD=yes--net=test--entrypoint="mysql"mysql/mysql-server:5.7'
这些以后,我可以直接调用他们并通过正常的命令行选项来连接我的MySQL5.7镜像,就像使用的是一个原生的MySQLCLIbinary。从MySQL5.7镜像中使用MySQLCLI:
jayj@~[524]$mysql-hmysql57 WelcometotheMySQLmonitor.Commandsendwith;org. YourMySQLconnectionidis4 Serverversion:5.7.12MySQLCommunityServer(GPL) Copyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand/orits affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type'help;'or'h'forhelp.Type'c'toclearthecurrentinputstatement. mysql>showschemas; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |performance_schema| |sys| +--------------------+ 4rowsinset(0.01sec)
使用MySQLshell:
jayj@~[527]$mysqlsh-hmysql57-uroot--session-type=node CreatingaNodeSessiontoroot@mysql57:33060 Enterpassword: Nodefaultschemaselected. WelcometoMySQLShell1.0.3DevelopmentPreview Copyright(c)2016,Oracleand/oritsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand/orits affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type'help','h'or'?'forhelp. CurrentlyinJavaScriptmode.UsesqltoswitchtoSQLmodeandexecutequeries. mysql-js>sql SwitchingtoSQLmode...Commandsendwith; mysql-sql>showschemas; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |performance_schema| |sys| +--------------------+ 4rowsinset(0.00sec) mysql-sql>
现在,如果为了一些事情想要运行检查MySQL5.5,可以这样做:
jayj@~[530]$dockerrun--name=mysql55--net=test-eMYSQL_ALLOW_EMPTY_PASSWORD=yes-dmysql/mysql-server:5.5 Unabletofindimage'mysql/mysql-server:5.5'locally 5.5:Pullingfrommysql/mysql-server a3ed95caeb02:Alreadyexists ffe36b360c6d:Alreadyexists 646f220a8b5d:Pullcomplete ed65e4fea7ed:Pullcomplete d34b408b18dd:Pullcomplete Digest:sha256:12f0b7025d1dc0e7b40fc6c2172106cdf73b8832f2f910ad36d65228d9e4c433 Status:Downloadednewerimageformysql/mysql-server:5.5 6691dd9d42c73f53baf2968bcca92b7f4d26f54bb01d967be475193305affd4f jayj@~[531]$mysql-hmysql55 WelcometotheMySQLmonitor.Commandsendwith;org. YourMySQLconnectionidis1 Serverversion:5.5.49MySQLCommunityServer(GPL) Copyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand/orits affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type'help;'or'h'forhelp.Type'c'toclearthecurrentinputstatement. mysql>showschemas; +--------------------+ |Database| +--------------------+ |information_schema| |mysql| |performance_schema| +--------------------+ 3rowsinset(0.00sec) 或者,PerconaServer: jayj@~[534]$dockerrun--name=ps57--net=test-eMYSQL_ALLOW_EMPTY_PASSWORD=yes-dpercona/percona-server:5.7 Unabletofindimage'percona/percona-server:5.7'locally 5.7:Pullingfrompercona/percona-server a3ed95caeb02:Pullcomplete a07226856d92:Pullcomplete eee62d87a612:Pullcomplete 4c6755120a98:Pullcomplete 10eab0da5972:Pullcomplete d5159a6502a4:Pullcomplete e595a1a01d00:Pullcomplete Digest:sha256:d57f0ce736f5403b1714ff8d1d6b91d5a7ee7271f30222c2bc2c5cad4b4e6950 Status:Downloadednewerimageforpercona/percona-server:5.7 9db503852747bc1603ab59455124663e8cedf708ac6d992cff9b43e2fbebd167 jayj@~[537]$mysql-hps57 WelcometotheMySQLmonitor.Commandsendwith;org. YourMySQLconnectionidis2 Serverversion:5.7.10-3PerconaServer(GPL),Release3,Revision63dafaf Copyright(c)2000,2016,Oracleand/oritsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand/orits affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type'help;'or'h'forhelp.Type'c'toclearthecurrentinputstatement. mysql>
所以,这一切都很好,一旦镜像被本地缓存,上下调整新的容器可以实现无痛和快速。所有这一切的工作都是与我的操作系统工作站分离的。可能还有其他事情可以使用这种设置,但还没找到方法(如加载数据文件、运行代码来连接这些容器等),但将来我会解决。
以上所述是小编给大家介绍的Mac上使用Docker快速启动MySQL测试的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!