docker安装上mysql
去docker仓库里搜索mysql
docker 会自动创建宿主机目录
下载mysql
docker pull mysql:5.7
启动mysql
# --name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.31
参数说明
-p 3306:3306 将容器的3306端口映射到主机的3306端口
-v/mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机
-v/mydata/mysql/log:/var/log/mysql 将日志文件夹挂载到主机
-v/mydata/mysql/data:/var/lib/mysql/ 将配置文件夹挂载到主机
-e MUSQL_ROOT_PASSWORD=root 初始化root用户的密码
以下是对这条 docker run
命令的详细解释:
命令整体作用
这条命令用于在 Docker 环境中启动一个 MySQL 5.7.31 版本的容器,并且进行了端口映射、数据卷挂载以及设置了 MySQL 的 root 用户密码等操作,方便对 MySQL 数据库进行使用和数据持久化管理。
具体参数解释
-p 3306:3306
:- 这是端口映射参数。冒号左边的
3306
表示宿主机(运行 Docker 的物理机或虚拟机)上对外开放的端口,冒号右边的3306
是容器内部 MySQL 服务默认监听的端口。意味着外部客户端可以通过访问宿主机的3306
端口来连接到容器内运行在3306
端口上的 MySQL 服务。例如,你在宿主机所在的局域网内的其他机器上,使用数据库客户端工具时,配置连接宿主机的3306
端口,就能访问到这个 Docker 容器里的 MySQL 数据库了。
- 这是端口映射参数。冒号左边的
--name mysql
:- 用于给启动的容器指定一个名称,这里将容器命名为
mysql
,方便后续通过这个名称来对容器进行管理操作,比如查看容器日志、停止容器、重启容器等。例如,可以使用docker stop mysql
命令来停止这个名为mysql
的容器。
- 用于给启动的容器指定一个名称,这里将容器命名为
-v /mydata/mysql/log:/var/log/mysql
:- 这是数据卷挂载操作,将宿主机上的
/mydata/mysql/log
目录挂载到容器内的/var/log/mysql
目录。这样一来,MySQL 服务在容器内运行产生的日志文件就会存储在宿主机对应的目录下,便于查看、备份和管理日志,即使容器被删除了,日志数据依然保留在宿主机上。
- 这是数据卷挂载操作,将宿主机上的
-v /mydata/mysql/data:/var/lib/mysql
:- 同样是数据卷挂载,把宿主机的
/mydata/mysql/data
目录挂载到容器内的/var/lib/mysql
目录,容器内 MySQL 数据库的数据文件(如数据库表结构、数据记录等)将会存储在宿主机该目录下,实现了数据的持久化,避免容器删除或重新创建时数据丢失的问题。
- 同样是数据卷挂载,把宿主机的
-v /mydata/mysql/conf:/etc/mysql
:- 也是数据卷挂载,将宿主机的
/mydata/mysql/conf
目录挂载到容器内的/etc/mysql
目录,可用于存放自定义的 MySQL 配置文件,方便对容器内 MySQL 的配置(如字符集、缓存设置等)进行个性化调整,容器启动时会加载宿主机对应目录下挂载进去的配置文件。
- 也是数据卷挂载,将宿主机的
-e MYSQL_ROOT_PASSWORD=123456
:- 这个参数用于设置环境变量,在这里具体是设置了 MySQL 数据库 root 用户的密码为
123456
,使得通过 root 用户登录到这个容器内的 MySQL 服务时需要使用该密码进行验证。
- 这个参数用于设置环境变量,在这里具体是设置了 MySQL 数据库 root 用户的密码为
-d mysql:5.7.31
:-d
表示以守护进程(后台运行)的方式启动容器,这样容器会在后台持续运行而不会占用当前终端的输入输出。mysql:5.7.31
则指定了要使用的镜像名称及版本,告诉 Docker 从本地仓库(如果存在)或者远程 Docker Hub 等镜像仓库拉取mysql
镜像的5.7.31
版本来启动容器。
这条命令综合运用了 Docker 的多个常用功能,为在容器中稳定运行 MySQL 数据库并管理其数据和配置提供了便利的方式。不过在实际应用中,出于安全考虑,要注意妥善保管像 MySQL root 用户密码这样的敏感信息,并且合理配置相关的网络访问规则等。
命令解释:进入容器
推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
docker exec :在运行的容器中执行命令
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
要退出终端,直接输入 exit
重启 容器 :restart
vi:文本编辑器
- .命令模式: vi/vim 文件路径/文件名
- 输入模式:按下 i 进入输入模式(也称为编辑模式),开始编辑文字
- 按下 ESC 按钮回到一般模式
. 底线命令模式: 按 :
在一般模式中按下 :wq 储存后离开 vi
w-保存
q-退出
docker exec -it mysql bin/bash
exit;
vi /mydata/mysql/conf/my.conf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
docker restart mysql
Docker 安装 Redis
docker pull redis
mkdir:创建目录。
mkdir + dirname
1
参数
-p: 创建mydir目录以及mydir目录下面的dir_test文件。允许创建目录及子目录
-m:创建指定权限的目录
在这里插入代码片# 在虚拟机中
mkdir -p /mydata5.7/redis/conf
touch /mydata5.7/redis/conf/redis.conf
docker run -p 6379:6379 --name redis \
-v /mydata5.7/redis/data:/data \
-v /mydata5.7/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
# 直接进去redis客户端。
docker exec -it redis redis-cli
默认是不持久化的。在配置文件中输入appendonly yes,就可以aof持久化了。修改完docker restart redis,docker -it redis redis-cli
vim /mydata5.7/redis/conf/redis.conf
# 插入下面内容
appendonly yes
保存
docker restart redis