Docker Mac (二) mysql

本文详细介绍了如何在Mac系统上使用Docker部署MySQL数据库的过程,包括下载镜像、启动容器、连接数据库、查看日志及使用自定义配置文件等关键步骤。

下载镜像

既然有了docker,就一步步学习docker的容器技术,也方便开发,不用外部安装一坨又大又跑不动的软件

刚刚起步docker,遇到到很多的坑,还是决定记录一下,转个身就忘了

 

此次的系统是Mac, 从镜像中心pull一个mysql镜像,进入网易云的镜像中心,点复制即可,也可以从其他仓库下载,都一样

b379c03757194abd52545156fbdbd98bcb5.jpg

大多仓库下方都带有该应用的说明、版本、操作、注意点解决方式,作为新手还是耐心的看一下比较好,实在看不懂英文,可以找翻译,比百度、Google漫天找答案准确的多

复制pull的信息,直接上终端,等待下载完,docker images查看我的镜像

3363c9ca2dec2ab3e922d7ed802dc2feb8d.jpg

删除镜像

hello-world是之前做docker测试使用,另外redis和mysql是本次下载的,放着后面用

作为有文件洁癖的我,还是要把hello-world给删掉,删掉image也是有套路操作的

①命令 docker ps -a 查看镜像生成的容器,(如果容器中没有,就跳过①②步)

87b1e52b90b0af0fe50f1462abe0401a6c4.jpg

②命令 docker rm fe58   删除容器,输入容器ID(ID是64位的,展示只展示16位,如果容器不多且ID前几位不重复,可以直接自由输入几位都可以被标识到该目标)

③命令 docker rmi 2cb  删除镜像(比删除容器命令多了一个 i ), 完成

22db08db6758fee0d78eb7a9eec88acf9df.jpg

 

关于重命名

如果有美感的同学想重复名镜像容器的话,提醒一下: 不能以大写字母和下划线命名

在下认为还是不要重命名了,虽然有点长,但这名字记录着我们当时在哪里搞到她的,也就可以去哪里查看相关的文档信息,毕竟婆家这么多

 

mysql

下面对文档做个翻译,跟着操作 ☟☟☟

①启动一个mysql服务器实例

启动MySQL实例很简单:

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

some-mysql是要分配给容器的名称,my-secret-pw是为MySQL root用户设置的密码,tag是指定所需MySQL版本的标记。 请参阅上面的列表以获取相关标签。

≡≡》跟着①说明操作一波,运行成功并返回一个64位ID, -d命令是将mysql至于后台运行,然后我们就可以继续打命令

2c175e4f0dda4c90644b9aca91b06a37adb.jpg

 

②从Docker另一个容器应用程序连接到MySQL

此镜像暴露标准MySQL端口(3306),因此容器链接使MySQL实例可用于其他应用程序容器。 像这样启动你的应用程序容器,将它链接到MySQL容器:

$ docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql

≡≡》这边还没有应用服务,先留着

 

③从MySQL命令行客户端连接到MySQL

以下命令启动另一个mysql容器实例并对原始mysql容器运行mysql命令行客户端,允许您对数据库实例执行SQL语句 (以下是一行命令):

$ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql h\"$MYSQL_PORT_3306_TCP_ADDR\" -P\"$MYSQL_PORT_3306_TCP_PORT\" -uroot -p\"$MYSQL_ENV_MYSQL_ROOT_PASSWORD\"'

some-mysql是原始mysql容器的名称。

此镜像还可以用作非Docker或远程MySQL实例的客户端:

$ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p

有关MySQL命令行客户端的更多信息可以在MySQL文档中找到

≡≡》文档记录的都是docker run,说明都是从头执行镜像,现在刚刚已经运行了mysql,接着写就好了,执行sql也就是操作数据库了,操作数据库就要先进入数据库

44c5965bf00670fb7c7af7ba4ba0d9a98a1.jpg

docker exec -it 8e22 bash  命令进运行的容器查看,必须是运行时的容器,看到进入了root@...的伪终端,不知道命令的时候,比如docker exec --help,上面就会提示各种操作以及说明,到了伪终端就好操作了,常规数据库命令,仔细的人会发现上面启动mysql的时候,打id是redis的id,不是mysql的,后面怎么操作都不会正确,粗心是会把自己弄死的,尴尬

重新run mysql镜像,并exec进入运行容器:

e2f8966be21f295374736d122d8f55f9a84.jpg

跳出mysql> 就熟悉了,就可以showdatabases; create ...一顿操作,退出命令: exit

学习微服务的时候,经常提到服务的高可用、负载均衡,当然mysql在这里也可以做到一样的效果,实现docker中mysql主从式高可用数据库,也在于docker的优点,具有隔离性,妈妈再也不用担心机子不够用的问题,所以我们只需要多run 几个mysql,一个作为主数据库(master),另外几个作为从数据库(slave),配置容器属性,后面用到再学习

继续翻译

 

④容器shell访问和查看MySQL日志

docker exec命令允许您在Docker容器内运行命令。 以下命令行将在mysql容器中为您提供一个bash shell:

$ docker exec -it some-mysql bash

MySQL Server日志可通过Docker的容器日志获得:

$ docker logs some-mysql

≡≡》进入运行时容器已经操作过了,查看日志是要退出bash,在docker中访问日志,会打印在终端上

 

⑤使用自定义MySQL配置文件

MySQL启动配置在文件/etc/mysql/my.cnf中指定,该文件又包含在/etc/mysql/conf.d目录中以.cnf结尾的所有文件。 此目录中的文件中的设置将扩充和/或覆盖/etc/mysql/my.cnf中的设置。 如果要使用自定义的MySQL配置,可以在主机上的目录中创建备用配置文件,然后将该目录位置挂载到mysql容器中的/etc/mysql/conf.d

如果/my/custom/config-file.cnf是自定义配置文件的路径和名称,则可以像这样启动mysql容器(请注意,此命令中仅使用自定义配置文件的目录路径):

$ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这将启动一个新容器some-mysql,其中MySQL实例使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf中的组合启动设置,后者的设置优先。

请注意,启用了SELinux的主机系统上的用户可能会遇到此问题。 当前的解决方法是将相关的SELinux策略类型分配给新的配置文件,以便允许容器装入它:

$ chcon -Rt svirt_sandbox_file_t /my/custom

≡≡》这里会出现问题,就像文档中说的一样,需要被允许,才可以执行自定义配置文件方式

 

就学到这里,休息下,太长了,不容易消化,一个mysql应用的操作,大部分应用也有类似的套路

-------------------------------------------------

转载于:https://my.oschina.net/u/3829444/blog/1848222

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值