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,就到这里。
文章来源: daodaozi.blog.csdn.net,作者:兰舟千帆,版权归原作者所有,如需转载,请联系作者。
原文链接:daodaozi.blog.csdn.net/article/details/125801354
- 点赞
- 收藏
- 关注作者
评论(0)