Docker学习7 - Docker常规安装简介 (tomcat/mysql/redis)
1.总体步骤
1.搜索镜像
2.拉取镜像
3.查看镜像
4.启动镜像
5.服务端口映射
6.停止容器
7.移除容器
2.安装tomcat
1.docker hub上面查找tomcat镜像:
1 | docker search tomcat |
2.从docker hub上拉取tomcat镜像到本地:
1 | docker pull tomcat |
3.docker images查看是否有拉取到的tomcat:
1 | docker image tomcat |
4.使用tomcat镜像创建容器实例(也叫运行镜像):
1 | docker run -it -p 8080:8080 tomcat |
-p 小写,主机端口:docker容器端口
-P 大写,随机分配端口
i:交互
t:终端
d:后台
5.访问猫首页
问题
解决:可能没有映射端口或者没有关闭防火墙
6.把webapps.dist目录换成webapps,先成功启动tomcat
1 | docker run -d -p 主机端口:容器端口 镜像名称 |
7.查看webapps 文件夹查看为空
8.免修改版说明
1 2 3 | docker pull billygoo /tomcat8-jdk8 docker run -d -p 8080:8080 --name mytomcat8 billygoo /tomcat8-jdk8 |
3.安装mysql
1.docker hub上面查找mysql镜像
2.从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
3.使用mysql5.7镜像创建容器(也叫运行镜像)
命令出处,哪里来的?
简单版,使用mysql镜像
1 2 3 4 5 6 7 | docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 docker ps docker exec -it 容器ID /bin/bash mysql -uroot -p |
建库建表插入数据
外部Win10也来连接运行在dokcer上的mysql容器实例服务
docker上默认字符集编码隐患
中文乱码
docker里面的mysql容器实例查看,内容如下:
1 | SHOW VARIABLES LIKE 'character%' |
删除mysql容器
删除容器后,里面的mysql数据如何办
容器实例一删除,你还有什么? 删容器到跑路。。。。。?
实战版
新建mysql容器实例
1 | docker run -d -p 3306:3306 --privileged= true - v /zzyyuse/mysql/log : /var/log/mysql - v /zzyyuse/mysql/data : /var/lib/mysql - v /zzyyuse/mysql/conf : /etc/mysql/conf .d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 |
新建my.cnf
通过容器卷同步给mysql容器实例
1 2 3 4 5 6 7 8 9 | [client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8 |
重新启动mysql容器实例再重新进入并查看字符编码
再新建库新建表再插入中文测试
结论
- 之前的DB 无效
- 修改字符集操作+重启mysql容器实例
- 之后的DB 有效,需要新建
结论:docker安装完MySQL并run出容器后,建议请先修改完字符集编码后再新建mysql库-表-插数据
假如将当前容器实例删除,再重新来一次,之前建的db01实例还有吗?trytry
4.安装redis
从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
入门命令
命令提醒:容器卷记得加入--privileged=true
Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
1.在CentOS宿主机下新建目录/app/redis
建目录:
1 | mkdir -p /app/redis |
2.将一个redis.conf文件模板拷贝进/app/redis目录下
3./app/redis目录下修改redis.conf文件
- 开启redis验证 可选 requirepass 123
- 允许redis外地连接 必须 注释掉 # bind 127.0.0.1
- daemonize no,将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
- 开启redis数据持久化 appendonly yes 可选
- 使用redis6.0.8镜像创建容器(也叫运行镜像)
- 测试redis-cli连接上来
1 | docker exec -it 运行着Rediis服务的容器ID redis-cli |
- 请证明docker启动使用了我们自己指定的配置文件
修改前
我们用的配置文件,数据库默认是16个
修改后
宿主机的修改会同步给docker容器里面的配置。
记得重启服务
测试redis-cli连接上来第2次
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)