Docker学习2 - 镜像使用:MySQL、Redis、Nginx

x33g5p2x  于2022-07-11 转载在 Docker  
字(5.0k)|赞(0)|评价(0)|浏览(627)

镜像下载

镜像搜索地址: https://hub.docker.com/

docker pull 软件名:版本号
MySQL
最简单不需要任何文件映射
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
5.7

超级管理员权限

docker pull mysql:5.7

//查看已经安装的软件
docker images

//启动MySQL  第一行虚拟机的3307端口映射到容器的3306端口  -e是设置MySQL root账号的密码是roout  -d是指定启动的数据库版本 -v是挂载的意思,容器中这个目录/var/log/mysql 里面的文件都同步映射到虚拟机的/mydata/mysql/log这个目录里面,当该虚拟机这个目录的文件,容器里面的文件也一起变动   --name表示容器的名字
docker run -p 3307: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=root
    -d mysql:5.7
 

 
 

 
//经过上面的命令一个启动成功了,可通过Navicat进行连接这个容器的MySQL - 如下图    

//进入容器内部
//查看正在进行的容器
docker ps
//进入容器 == 其实就是进了个小的Linux系统
docker exec -it mysql /bin/bash
//查找有关MsyqL的目录
whereis mysql

//退出容器,其实就是linux系统用户退出
exit

//修改MysqL的配置文件 - 进入虚拟机的/mydata/mysql/conf,创建my.cnf文件,将下列内容放进去并保存
[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

[mysql]
default-character-set=utf8

[client]
default-character-set=utf8

//查看容器并重启
docker ps
docker restart mysql

//进入查看容器中的/etc/mysql目录是否有虚拟机中/mydata/mysql/conf目录中my.cnf
docker exec -it mysql /bin/bash

//可见文件时一摸一样的
cd /etc/mysql
ls
cat my.cnf

最新版1(可用)
docker pull mysql

docker images

 // mysql8 特别注意主机中的/www/server/mysql/data /www/server/mysql/log目录不要创建,只要创建父目录即可,否则启动不起来(真实可用),容器自动会在本地创建data、log目录    === 提前设置后主机的my.cnf文件
docker run -p 3306:3306  -v /www/server/mysql/data:/var/lib/mysql -v /www/server/mysql/log:/var/log/mysql -v /www/server/mysql/my.cnf:/etc/mysql/conf.d/my.cnf  --name mysql_latest -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

//查看是否启动mysql成功
docker ps

//如果上述没找到正在运行的mysql,则查看启动日志,看报什么错误
docker logs -f -t --tail 20 mysql_latest

//可使用RDM连接redis或者直接使用下面的docker命令进行redis客户端
docker exec -it mysql bash


/www/server/mysql/my.cnf

[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
#default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600
最新版2(可用)
//下载镜像
docker pull mysql

//查看镜像
docker images

//启动镜像 == mysql映射到本机3307
docker run -p 3307:3306 -v  /www/server/mysql/data:/var/lib/mysql -v  /www/server/mysql/conf.d:/etc/mysql/conf.d/  --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest 

//启动镜像 == mysql映射到本机3306 == 建议
docker run -p 3306:3306 -v  /www/server/mysql/data:/var/lib/mysql -v  /www/server/mysql/conf.d:/etc/mysql/conf.d/  --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:latest

本机/www/server/mysql/conf.d/mysql.cnf

[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4

[mysqld]
#设置3306端口
port=3306
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
#default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600
Redis
历史

//最新版Redis
sudo docker pull redis

//创建redis.conf目录以及其对应的父目录
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

//启动Redis  第一行虚拟机的3307端口映射到容器的3306端口  -e是设置MySQL root账号的密码是roout  -d是指定启动的数据库版本 -v是挂载的意思,容器中这个目录/var/log/mysql 里面的文件都同步映射到虚拟机的/mydata/mysql/log这个目录里面,当该虚拟机这个目录的文件,容器里面的文件也一起变动   --name表示容器的名字
docker run -p 6379:6379 
    --name redis 
    -v /mydata/redis/data:/data 
    -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf 
    -d redis redis-server /etc/redis/redis.conf
 // docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
 
    
//进入Redis客户端    
docker exec -it redis redis-cli    

//当重启Redis会导致直接设置的数据丢失,故需要设置持久化设置,  在/mydata/redis/conf/redis.conf文件中添加下列配置
appendonly yes

//然后重启redis容器即可
docker restart redis
最新版(可用)
docker pull redis

//先在宿主机创建文件/www/server/redis/redis.conf,文件在下面直接复制粘贴即可
//宿主机:只需创建/www/server/redis目录以及redis.conf文件即可,data目录无需创建
docker run -di  -v /www/server/redis/redis.conf:/etc/redis/redis.conf -v /www/server/redis/data:/data -p 6379:6379  --name redis  redis:latest redis-server /etc/redis/redis.conf

docker ps


redis.conf文件修改如下

//关闭守护进程启动
//daemonize no

//任何网络IP都可访问redis
//bind  0.0.0.0

//持久化
//appendonly yes

//使用redis需要密码
//requirepass ctbb123
Nginx
//获取nginx镜像
docker pull nginx

//查看nginx镜像
docker images

//将nginx部署作为镜像 == 先这样启动,然后进去nginx容器查看配置文件目录这些在哪里
docker run -d --name nginx -p 80:80 nginx:latest

//进去容器内部 == 配置文件目录在 
//配置文件,进程ID(容器目录):/etc/nginx
//日志文件(容器目录):/var/log/nginx
//自行根据配置文件进行目录、文件拷贝到宿主机
docker exec -it nginx /bin/bash

//知道需要拷贝的容器、文件路径之后退出容器
exit

//注意:宿主机的nginx的目录不用创建、不用创建、不用创建,重要的事情说三遍,只要创建父目录即可即/etc/server
docker cp 容器ID:/etc/nginx   /etc/server/nginx 
docker cp 容器ID:/usr/share/nginx/html /etc/server/nginx/html

//停止、并删除原先容器(配置文件没挂载到宿主机)
docker stop nginx容器ID
docker rm nginx容器ID

//启动新容器(配置文件挂载到宿主机目录)
docker run -d -v /www/server/nginx/log:/var/log/nginx -v /www/server/nginx/nginx.pid:/var/run/nginx.pid -v /www/server/nginx/nginx.conf:/etc/nginx/nginx.conf -v /www/server/nginx/conf.d:/etc/nginx/conf.d -v /www/server/nginx/html:/usr/share/nginx/html  --name nginx -p 80:80 nginx:latest

相关文章