当前位置:   article > 正文

Docker配置mysql以及宿主机容器目录挂载_docker绑定宿主机目录和容器目录 容器目录需要创建嘛

docker绑定宿主机目录和容器目录 容器目录需要创建嘛

Docker配置mysql以及宿主机容器目录挂载

在之前的docker 挂载中主要说明了创建数据卷并挂载的方式。现在我们做一种创建普通目录并进行挂载的方式。
基于mysql镜像的拉取并进行配置。

首先拉取mysql镜像

docker pull mysql:8.0.29

  • 1
  • 2

在这里插入图片描述
在这里插入图片描述

这样直接拉取完毕后,你再去查看下目前投的镜像

 docker images

  • 1
  • 2

你看这个版本的镜像就有了
在这里插入图片描述
因为mysql需要相关的配置文件。我们做一个配置文件的挂载其实你可以理解为映射或者引用。

自己创建一个文件夹,然后里面创建用来存放mysql相关配置的分级文件夹。

我这里用到了FinalShell工具,当然你可以命令去创建。一定要安排好你目录的位置。我的在根目录下直接创建了这样的分级文件夹。创建的命令就不说了。
在这里插入图片描述

那么我们写一段命令,比较长,但是并不复杂。其实这些文件春

docker run \
 --name mysql -p 3306:3306 -v /mysql/mysql/data:/var/lib/mysql \
-v /mysql/mysql/config:/etc/mysql/conf.d \
 -v /mysql/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.29


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

太长的命令我们需要用 \ 划分开,这样就可以防止系统因为换行而直接执行没有输入完毕的命令。

对参数做一个解释说明
–name : 对运行容器起一个名字,当然你这里不叫mysql 也是可以的,就是一个名字而已
-p 指定端口,注意这里两个端口的指定。一般叫做把宿主机的端口映射到容器。mysql,默认的监听端口是3306,如果你不修改这里默认的话,那么这里的第二个端口一定是3306,如果你这里随便写一个,是无法正确映射到的。前面的端口主要是干什么用的?将来我们在我们主机连接远程服务器,我们的远程服务器的注解地址加上这个端口就是我们这个mysql容器的访问链接。
-v 这里后面我们就是做了一个宿主目录和容器目录的挂载映射。包括了配置,日志记录,数据存储等等。
-e 这里后面首先做了一个mysql密码的设定
-d 后面 代表的是后台运行
后面的mysql:8.0.29就是说明了运行的容器和版本。

已经很尽力说的详细了。

需要注意的是如果你的原来的系统本来就有一个mysql的版本并且占用了你的3306端口,那么我的建议是杀死是比较明智简单的操作。

出现像这样的报错
在这里插入图片描述

 Error response from daemon: driver failed programming external connectivity on endpoint mysql (fb957f020c1833f804f2612b60c4ef60162dbbb5c888c29488bd1b02bbaab8f9): Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use.

  • 1
  • 2

首先找到谁占用了这个3306

 netstat -nap | grep 3306

  • 1
  • 2

在这里插入图片描述

你这里可以看到它的进程号
2153这个进程号,然后把它杀掉。

kill 2153
  • 1

在这里插入图片描述

然后你去启动就可以了。

阿里云这个服务器啊!你不光需要在系统内部开启防火墙,还需要去面板开启防火墙。

 firewall-cmd --zone=public --add-port=3306/tcp --permanent 

  • 1
  • 2

在这里插入图片描述
然后加载一下配置

firewall-cmd --reload  
  • 1

在这里插入图片描述
可以查看端口是否开放成功

 firewall-cmd --zone=public --list-ports

  • 1
  • 2

在这里插入图片描述

还需要去面板操作

在这里插入图片描述

然后我们去本机的navicat远程连接这个数据库

在这里插入图片描述
这样我们就成功连接到远程数据库。
在这里插入图片描述

在这里插入图片描述
给你一些尝试测试的sql语句

create database jgdabc;
create table if not exists stu2
(
	sid int(11),
	name varchar(10),
	gender varchar(10),
	brith date
	
);


-- alter table stu2 add address varchar(10); 
alter table stu2 add (address varchar(10),score int(10));
insert into stu2 values(1,"李自成","男","1000-12-12","北京",44),(2,"华佗","男","1201-12-13","三国",100);
select distinct * from stu2; #无重复记录查找
select * from stu1 as p1; -- as 可以省略
select *from stu2 as p2; -- 起别名
select name , score+10 score  from stu2;
select  distinct * from stu2 where name = "李自成";  -- 条件查询
select * from stu2 where not (name ="李自成");


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

然后测试后我们去看我们之前挂载的目录文件有没有新的数据出现,你看这里记录了一些非常详细的信息。ok,就到这里。

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/478329
推荐阅读
相关标签
  

闽ICP备14008679号