docker部署mysql详解

前提完成docker环境部署
执行 docker pull mysql:8.0 # 拉取 mysql 8.0镜像
docker pull mysql # 不加版本号拉取最新版本镜像
在这里插入图片描述
执行docker imeges #查看镜像部署完成状态
在这里插入图片描述
一般来说数据库容器不需要建立目录映射
启动容器
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
docker run :启动一个容器

-d :将容器作为后台进程运行
–name mysql :给容器设置一个名称为mysql
-p 3306:3306 :将主机的3306端口映射到容器中的3306端口(用于与外部应用程序通信)
-e TZ=Asia/beijing :配置信息,此处设置容器的时区为亚洲/北京
-e MYSQL_ROOT_PASSWORD=123456 :配置信息,设置MySQL的root用户密码为123456
mysql:8.0 指定了所使用的MySQL的镜像。这个参数告诉Docker使用官方的MySQL镜像来创建并运行容器。

docker ps -a 查看当前所有容器
docker start 容器ID或容器名 启动容器
docker stop 容器ID或容器名 停止容器
docker restart 容器ID或容器名 重启容器
(docker start mysql)以容器名启动mysql容器
(docker start 3218b38490ce)以容器ID启动mysql容器
docker exec -it mysql .bin/bash 进入容器
在这里插入图片描述
Docekr ps -a 查看所有容器实例
Docker rm 容器ID 删除容器实例
Docker rmi imageID 删除镜像
Docker rmi -f imageID 强制删除镜像

mysql保存原有数据

本地服务器新建文件
mkdir -p /opt/mysql/conf 保存docker容器内mysql配置文件
mkdir -p /opt/mysql/data 保存docker容器内mysql数据文件
mkdir -p /home/mysql/mysql-files 不加载启动报错
或使用mkdir -p ./mysql/{data,conf,logs} 快速创建
mysql-files 是 MySQL 数据库默认用于存储用户通过 LOAD DATA INFILE 命令导入的文件的目录。这个目录通常用于将外部数据文件加载到 MySQL 数据库中。
本地目录路径可根据实际需求更改
mysql 映射文件启动
docker run -d -p 3306:3306 --name mysql -v /opt/mysql/conf:/etc/mysql -v /opt/mysql/data:/var/lib/mysql -v /home/mysql/mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
映射路径根据自己实际路径修改

启动报错:
docker: Error response from daemon: driver failed programming external connectivity on endpoint mysql (a415cca6ca6f95a916ad0fe172f8a63089eddc2e8b50f45671b0783022d271bc): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.2:3306 ! -i docker0: iptables: No chain/target/match by that name.
可重启docker服务后重试

mkdir -p递归建立文件夹

docker cp mysql:/etc/mysql /opt/mysql/conf/
docker cp 拷贝命令
mysql 容器名称(name)
:/etc/mysql 需要拷贝的内容路径
/opt/mysql/conf/ 需要拷贝的目录

mysql映射文件
一般mysql容器的数据文件在var/lib/mysql下 my.cnf可使用下例文件,也可以拷贝其他配置文件,配置文件路径一定要设置正确。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
#Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
#Custom config should go here
!includedir /etc/mysql/conf.d/

mkdir -p ./mysql/{data,conf,logs} 递归快速创建本地所需文件夹

docker run -d -p 3306:3306 --name mysql -v /opt/mysql/data/:/var/lib/mysql -v /opt/mysql/logs/:/logs -v /opt/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
启动容器

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开放源代码的虚拟化平台,能够以容器的形式打包和分发应用程序。MySQL是一种流行的开源关系型数据库管理系统。使用Docker部署MySQL可以极大简化安装和配置的过程,并且能够实现数据的持久化。 首先,我们需要在Docker上搜索并选择适合的MySQL镜像。可以通过运行`docker search mysql`命令来查找可用的MySQL镜像。选择合适的镜像后,可以通过`docker pull <镜像名称>`来下载镜像,例如`docker pull mysql:latest`。 下载完成后,我们可以运行以下命令来创建一个MySQL容器: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest ``` 这个命令将会创建一个名为mysql的容器,并将MySQL服务的默认端口3306映射到宿主机的3306端口。同样,我们可以设置一个root密码,让MySQL服务有一个基本的访问控制。 这样,MySQL容器就成功运行起来了。我们可以通过`docker ps`命令来查看正在运行的容器。接下来,我们可以使用MySQL客户端连接到该容器。可以通过以下命令登录到MySQL容器内部的MySQL服务: ``` docker exec -it mysql mysql -uroot -p ``` 然后,我们可以在MySQL容器内部使用标准的MySQL命令来管理和操作数据库。 要实现数据的持久化,我们可以将MySQL容器内部的数据目录和宿主机的目录进行挂载。可以使用`-v`参数来指定目录的挂载点。例如: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql/data:/var/lib/mysql -d mysql:latest ``` 这将会将MySQL容器内部的`/var/lib/mysql`目录与宿主机上的`/path/to/mysql/data`目录进行挂载,从而实现数据的持久化。 通过以上步骤,我们可以使用Docker部署MySQL,并且实现数据的持久化。这样,我们可以方便地在不同的环境之间快速部署和迁移MySQL数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值