文档介绍:该【在Docker中安装Mysql 】是由【小屁孩】上传分享,文档一共【5】页,该文档可以免费在线阅读,需要了解更多关于【在Docker中安装Mysql 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..以家为家,以乡为乡,以国为国,以天下为天下。——《管子·牧民》在Docker中安装Mysql前?此篇幅内容较多,讲解的很详细,也有很多知识点。能耐?认真的读完,就很不错了~如果你觉得此?章不错的话,或者是根据此?档进?安装mysql的话,抽空在?档最下?留个?吧让我看到你的?持Docker中国官?镜像加速如果觉得国外下载速度太慢,可以配置?个“Docker中国官?镜像加速”,来提?镜像下载的速度。?般情况下,都会永久性的配置镜像加速,在Linux中修改/etc/docker/?件,填?以下内容:{"registry-mirrors":["},需要??创建?下。?件修改保存成功之后,记得重启?下Docker服务,以便让这个镜像加速?效。重启Docker服务我们在【在centos系统中安装Docker】?节中讲过Docker随着服务器重启?动启动的内容,正好可以通过命令servicedockerrestart来实现Docker服务的重启。然后我们在Linux中执?命令:servicedockerrestart出现下图所?结果,表明Docker服务已经重新启动了!这样就可以永久性的使?Docker加速服务了。如果不做特别的配置的话,之前处于运?状态的容器,随着Docker服务的重启也会停?运?。下载mysql镜像dockerpullmysql如果配置了镜像加速,那么在下载mysql镜像或者其他?较?的?件的时候,会发现下载速度变得?常快!启动mysql容器dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=123456--name=mysqlmysql其中-e的作?是?于设置环境变量,mysql默认?户名为root,则MYSQL_ROOT_PASSWORD即为root设置密码,即123456查看运?的mysql容器dockerps如下图:mysql容器已经正常启动了!进?mysql容器既然mysql服务启动了,如果我们想对mysql进?操作(?如进?命令?操作、客户端连接等操作),该怎么办?通过dockerexec命令进?mysql容器:dockerexec-itc9/bin/bash其中的“c9”指的当前mysql容器ID的前?部分值(在上图就可以看出来mysql容器的ID是c94faeed480a)。回车运?效果如下图:其实这个时候,命令?控制台可以输?mysql相关的命令了。连接mysql数据库mysql-uroot-p123456如下图:这个就是我们?常熟悉的mysql命令?界?了!我们可以在这?创建数据库、表等操作。再次印证了Docker的强?和?便!查看当前所有的数据库在mysql命令?中执?命令:showdatabases;如下图所?:吾日三省乎吾身。为人谋而不忠乎?与朋友交而不信乎?传不****乎?——《论语》:..云路鹏程九万里,雪窗萤火二十年。——《王实甫》完全就是和平常使?mysql?样。创建数据库、表、新增测试数据创建数据库createdatabasedocker_test;效果如下图:这?我就创建了?个数据库docker_test选择数据库?先需要选择具体的数据库,执?命令选择刚刚创建的数据库:usedocker_test创建表:createtabletest(namevarchar(20),ageint(11));创建了test表,有2个字段:name、age添加测试数据:insertintotestvalues("Kitty",26),("Tom",18),("Jack",36);这?就简单添加3条测试数据。我们查询?下数据是否存在于数据库中:select*fromtest;?切OK!客户端连接mysql数据库既然mysql成功启动并运?,除了能在命令?中操作mysql数据库之外,肯定也是必须要能在客户端上连接和操作数据库才?。下?我就在我本地电脑上通过数据库客户端软件连接?下这个mysql数据库,看看能不能正常连接和操作。打开本地DataGrip客户端,新建连接mysql数据库输?正确的mysql相关信息,连接数据库:输?完成之后,可以点击下?的TestConnection按钮,来测试连接是否正常。查看创建的****数据库和表:到此,mysql的相关服务已经正常访问和操作了。这和我们传统的使?mysql没有什么不同。客户端中操作表数据我们通过DataGrip客户端,在test表中?动再添加?条数据,然后我们在docker中看看是否能查看到新增的数据:【注意】:我这?添加了?条带有中?的数据。进?mysql容器中查询表数据呀!是不是发现问题了~没错,中?乱码!怎么解决呢?mysql容器中解决表数据中?乱码查看mysql容器的ID:进?mysql的docker容器:dockerexec-itc9/bin/bash编辑mysql配置?件:vim/etc/mysql/f如果提?mandnotfound的错误信息,需要安装相关依赖包,执?下?两个命令即可:apt-getupdate非淡泊无以明志,非宁静无以致远。——诸葛亮apt-getinstallvim:..志不强者智不达,言不信者行不果。——墨翟f?件中加?以下配置:[mysqld]character-set-server=utf8[client]default-character-set=utf8[mysql]default-character-set=utf8最终修改结果为:重新进?mysql容器,查询表数据,显?结果为:可以看到,已经正常显?中?了!停?并重启mysql容器,再次查看效果客户端DataGrip重新连接mysql:客户端连接正常!进?mysql容器,查看表数据:mysql容器重启之后,查询数据正常显?中?!?切没什么问题了~mit命令提交新的镜像根据在mysql容器中所做的更改,创建新的mysql镜像。回想?下,我们在mysql容器中做了什么更改?创建数据库、表、新增数据、f配置?件,就是这些吧~mit命令****提交新镜像通过在Linux命令?中执?命令,提交新的镜像:mitc9mysql-new其中,“c9”就是指的容器ID,新的镜像名称为“mysql-new”。如下图:查看所有镜像列表:是不是发现了我们创建的新的镜像mysql-new了。启动新创建的mysql镜像由于上?我们已经运?了?个mysql的容器了,端?是3306,所以我们新运??个mysql容器的时候,端?号就不能是3306了,这?我指定为3307,且容器的别名是mysql-new,?便区分查看。进?新创建的mysql容器查看mysql数据库信息f配置?件内容从上?2张图中,可以明显的看到,我们之前创建的数据库docker_test、表test,都没有了!f配置?件的内容还是保留着的。why为什么会这样呢?官??mit命令的介绍中,有这样?段话:。如果对于“数据卷”不了解的话,确实看不懂是什么意思。数据卷与数据卷容器?产环境中使?Docker的过程中,往往需要对数据进?持久化,或者需要在多个容器之间进?数据共享,这必然涉及容器的数据管理操作。人人好公,则天下太平;人人营私,则天下大乱。——刘鹗:..古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼容器中管理数据主要有两种?式:数据卷(DataVolumes):数据卷是?个可供容器使?的特殊?录,它将主机操作系统?录直接映射进容器。数据卷容器(DataVolumeContainers):数据卷容器也是?个容器,但是它的?的是专门?来提供数据卷,供其他容器挂载使?的。根据官??mit的介绍中,可以猜测到为何之前创建的数据库、表都不见了,原因是因为mysql容器的挂载数据卷引起的。我们可以通过命令查看到别名是“mysql”的容器挂载数据卷的?录。看?下我们的“mysql”容器的ID信息,?便查看。通过命令dockerinspect查看mysql这个容器的数据卷挂载信息:dockerinspectc9执?命令之后,由于显?的内容?较多,这?我们就贴?下重要的信息:通过图中可以看到,mysql容器将容器内的/var/lib/mysql路径作为volume挂载。真正的数据库相关数据?件所在的?录就是“Source”对应的?录,即:/var/lib/docker/volumes/9b9988c8ef647fe563/_data我们可以进?mysql容器查看/var/lib/mysql?录下的内容:发现的确是mysql数据库的数据?件(红?区域)。这时候,我们切换到Linux命令?,进?到mysql容器的数据挂载?录,看看该?录下有什么内容:/var/lib/docker/volumes/9b9988c8ef647fe563/_data如下图所?:咦~是不是发现了什么!把黄?区域的内容与上图中红?区域内容进?对?,是不是内容?模?样!这也就印证了,当初我们在mysql容器中创建的数据库、表等,真正的数据库?件存放的位置就是在宿主机下?,?不是存放在容器中。到此,我们终于知道了为何mysql-new容器中的数据库、表都不见了,原来数据库?件是存放在宿主机上的。那该如何解决这个问题呢?怎样才能让mysql-new容器启动之后可以正常加载我们之前创建的数据库、表等数据呢?这就引?了下?的正题——数据挂载。数据挂载上?的?章??,把问题描述的?常详细清楚。我这?就不多做说明了。使?-v实现数据挂载(数据卷)如果我们想在run?个新的mysql容器的时候,可以正常访问我们之前在mysql容器中创建的数据库、表数据,则在dockerrun命令启动容器的时候,就需要指定挂载?录。注意:要想让新的mysql容器能正常挂载名称是“mysql”容器,前提是需要先停?名称是“mysql”的容器,不然的话,即使run命令配置正确,容器启动的时候会?直报错:上图就是因为没有事先停?mysql容器导致的。下?开始具体操作:先停?mysql容器重新启动?个新的mysql容器,命令如下:dockerrun-d-p3308:3306-eMYSQL_ROOT_PASSWORD=123456--namemysql-v-v/var/lib/docker/volumes/9b9988c8ef647fe563/_data:/var/lib/mysqlmysql最重要的?个参数-v:挂载数据卷。-v后?的值中间有“:”号,前半部分指的是宿主机的?录(也就是我们上?的mysql容器的数据库存储的?录),后半部分指的是容器的?录。实现的效果就是说:新启动的容器,挂载宿主机的?录,实现数据共享。运?结果:登录新的mysql-v容器,查看数据库信息直接看下图的命令操作吧:看到效果了吧!在这个mysql-v的新容器??,已经可以看到我们?开始在“mysql”容器中创建的数据库和表了。也就实现了容器之间的数据共享。核?的实现就是在run命令??加?了-v参数。如果不太明?-v的含义的,可以???上查询资料了解学****加深印象。上?我们解决了容器挂载数据卷的问题,但是细?的朋友,可能还有?个疑问:f配置?件、以及运?mysql镜像时指定的MYSQL_ROOT_PASSWORD=123456,却依然可以在新容器mysql-new中使?呢,为什么这俩样数据不会消失百川东到海,何时复西归?少壮不尽力,老大徒伤悲。——汉乐府《长歌行》:..一寸光阴一寸金,寸金难买寸光阴。——《增广贤文》呢?官??mit命令还有这样?段描述:mitacontainer’sfilechangesorsettingsintoanewimage.?歌翻译过来的意思就是:将容器的?件更改或设置提交到新映像可能很有?。还记得我们当初运?第?个mysql容器的时候,dockerrun命令是怎样的,这?贴?下当时启动容器的命令:dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=123456--name=mysqlmysql其中,??使?到了-e参数,设置了root?户的密码为123456。所以,结合官??mit的介绍(mitacontainer’sfilechangesorsettingsintoanewimage.),就可以知道,通过-e设置的信息,在使?commit提交新镜像的时候,mit命令使?这些设置构建了新的镜像,在新容器??使?的是相同的设置。这也印证了,我们在mysql-new容器中登录数据库的时候,登录密码写的是123456。因为在第?次启动mysql服务的时候,?户root密码是通过-e指定的,所以在commit提交新的镜像的时候,是被?同提交到了新镜像mysql-new中。数据卷容器通过数据卷容器也可以实现多个容器间的数据共享。如果要授权?个容器访问另?个容器的数据卷,我们可以使?-volumes-from参数来执?dockerrun。(这?就不多做说明了,有兴趣的可以?上??查阅资料研究)穷则独善其身,达则兼善天下。——《孟子》