linux怎么查看本机内存大小
221
2022-10-19
Docker下安装MySQL
Docker下安装并使用MySQL有两种方式,第一使用远程仓库镜像,第二自定义镜像。
【1】使用Hub镜像安装MySQL
从Hub镜像安装软件常规步骤
搜索镜像、拉取镜像、查看镜像、启动镜像、停止容器与移除容器。
① 搜索MySQL镜像
docker search mysql
② 从docker hub上(阿里云加速器)拉取mysql镜像到本地
如下所示,拉去MySQL5.7:
docker pull mysql:5.7
③ 创建容器实例并运行
命令如下:
docker run -p 3306:3306 --name mysql -v /mydocker/mysql/conf:/etc/mysql/conf.d -v /mydocker/mysql/logs:/var/log/mysql -v /mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
命令解释说明:
-p 3306:3306:将主机的3306端口映射到docker容器的3306端口。--name mysql:运行服务名字-v /mydocker/mysql/conf:/etc/mysql/conf.d :将主机/mydocker/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d-v /mydocker/mysql/logs:/var/log/mysql:将主机/mydocker/mysql目录下的 logs 目录挂载到容器的 /logs。-v /mydocker/mysql/data:/var/lib/mysql :将主机/mydocker/mysql目录下的data目录挂载到容器的 /var/lib/mysql-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。-d mysql:5.7 : 后台程序运行mysql5.7--character-set-server=utf8mb4 :设置字符集--collation-server=utf8mb4_unicode_ci:设置校对集
然后在/mydocker/mysql/conf编辑你的数据库配置文件即可,如下所示:
[root@localhost conf]# pwd/mydocker/mysql/conf[root@localhost conf]# lltotal 4-rw-r--r--. 1 root root 1379 Feb 20 07:40 my.cnf
宿主机上的my.cnf将会自动同步到容器内/etc/mysql/conf.d路径下,需要注意的是my.cnf权限不能是777,否则会因为权限过高mysql忽略掉!
可以查看容器日志:
docker logs -f -t --tail 100 529a4d9afd8e
进入容器内部查看:
docker exec -it 529a4d9afd8e /bin/bash
退出容器两种方式:
exit–容器停止退出crtl+p+q—容器不停止退出
宿主机上备份数据库:
docker exec 529a4d9afd8e sh -c ' exec mysqldump --all-databases -uroot -p"123456" ' > /mydocker/mysql/all-databases.sql
④ 容器其他操作
停止容器
docker stop 容器id
强制停止容器
docker kill 容器ID
删除容器
docker rm [-f] 容器ID
删除所有容器
docker rm -f $(docker ps -a -q)docker ps -a -q | xargs docker rm
【2】 mysql5.7容器内部情况
① 配置文件
配置文件路径在/etc/mysql下
root@2c1ae7a2f3cd:/etc/mysql# ls -ltotal 16drwxr-xr-x. 2 root root 4096 Feb 20 15:02 conf.dlrwxrwxrwx. 1 root root 24 Feb 1 18:06 my.cnf -> /etc/alternatives/my.cnf-rw-r--r--. 1 root root 839 Jul 9 2016 my.cnf.fallback-rw-r--r--. 1 root root 1215 Dec 18 13:15 mysql.cnfdrwxr-xr-x. 2 root root 4096 Feb 1 18:06 mysql.conf.d
如下所示/etc/mysql/mysql.conf.d下有个mysqld.cnf配置文件:
root@2c1ae7a2f3cd:/etc/mysql/mysql.conf.d# ls -ltotal 4-rw-r--r--. 1 root root 1610 Feb 1 18:06 mysqld.cnf
mysqld.cnf配置文件内容如下:
root@2c1ae7a2f3cd:/etc/mysql/mysql.conf.d# cat mysqld.cnf[mysqld]pid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockdatadir = /var/lib/mysql#log-error = /var/log/mysql/error.log# By default we only accept connections from localhost#bind-address = 127.0.0.1# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0
② 运行进程文件
在上面mysqld.conf中可以看到,mysql的进程文件在/var/run/mysqld路径下,如下所示:
root@2c1ae7a2f3cd:/var/run/mysqld# pwd/var/run/mysqldroot@2c1ae7a2f3cd:/var/run/mysqld# ls -ltotal 8-rw-r-----. 1 mysql mysql 2 Feb 20 15:02 mysqld.pidsrwxrwxrwx. 1 mysql mysql 0 Feb 20 15:02 mysqld.sock-rw-------. 1 mysql mysql 2 Feb 20 15:02 mysqld.sock.lock
③ 数据文件
在上面mysqld.conf中可以看到,mysql的数据文件在/var/lib/mysql路径下,如下所示:
root@2c1ae7a2f3cd:/var/run/lock# cd /var/lib/mysqlroot@2c1ae7a2f3cd:/var/lib/mysql# ls -ltotal 188476-rw-r-----. 1 mysql mysql 56 Feb 20 15:02 auto.cnf-rw-------. 1 mysql mysql 1680 Feb 20 15:02 ca-key.pem-rw-r--r--. 1 mysql mysql 1112 Feb 20 15:02 ca.pem-rw-r--r--. 1 mysql mysql 1112 Feb 20 15:02 client-cert.pem-rw-------. 1 mysql mysql 1680 Feb 20 15:02 client-key.pem-rw-r-----. 1 mysql mysql 1346 Feb 20 15:02 ib_buffer_pool-rw-r-----. 1 mysql mysql 50331648 Feb 20 15:02 ib_logfile0-rw-r-----. 1 mysql mysql 50331648 Feb 20 15:02 ib_logfile1-rw-r-----. 1 mysql mysql 79691776 Feb 20 15:02 ibdata1-rw-r-----. 1 mysql mysql 12582912 Feb 20 15:02 ibtmp1drwxr-x---. 2 mysql mysql 4096 Feb 20 15:02 mysqldrwxr-x---. 2 mysql mysql 4096 Feb 20 15:02 performance_schema-rw-------. 1 mysql mysql 1676 Feb 20 15:02 private_key.pem-rw-r--r--. 1 mysql mysql 452 Feb 20 15:02 public_key.pem-rw-r--r--. 1 mysql mysql 1112 Feb 20 15:02 server-cert.pem-rw-------. 1 mysql mysql 1680 Feb 20 15:02 server-key.pemdrwxr-x---. 2 mysql mysql 12288 Feb 20 15:02 sys
【3】自定义MySQL镜像
如在实例化容器并启动的时候初始化数据库,可以通过自定义DockerFile实现。
编写自定义DockerFile如下:
FROM mysql:5.7# 复制数据库初始化脚本my_initdb.sql到/docker-entrypoint-initdb.d文件夹下COPY my_initdb.sql /docker-entrypoint-initdb.d/my_initdb.sql
my_initdb.sql实例如下:
drop database IF EXISTS `lvyou` ;create database `lvyou` default character set utf8 collate utf8_general_ci;use `lvyou`;-- ------------------------------ Table structure for t_admin-- ----------------------------DROP TABLE IF EXISTS `t_admin`;CREATE TABLE `t_admin` ( `userId` int(11) NOT NULL, `userName` varchar(50) DEFAULT NULL, `userPw` varchar(50) DEFAULT NULL, PRIMARY KEY (`userId`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;-- ------------------------------ Records of t_admin-- ----------------------------INSERT INTO `t_admin` VALUES ('1', 'admin', '123456');
目录结构如下所示:
[root@localhost ~]# cd /mydocker/mysql[root@localhost mysql]# ll-rw-r--r--. 1 root root 241 Feb 20 12:41 Dockerfile-rw-r--r--. 1 root root 7260 Feb 20 13:05 my_initdb.sql
在/mydocker/mysql路径下执行命令创建镜像:
docker build -f Dockerfile -t mysql5.7v1 .
实例化容器并运行:
docker run -p 3306:3306 --name mysql5.7v1 -v /mydocker/mysql/conf:/etc/mysql/conf.d -v /mydocker/mysql/logs:/var/log/mysql -v /mydocker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql5.7v1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
查看日志可以看到执行了初始化脚本:
docker logs -f -t --tail 100 367090145c91
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~