赞
踩
框架图
总体步骤:
docker hub上查找tomcat镜像
从docker hub上拉取tomcat镜像到本地
docker images查看是否有拉取到的tomcat
使用tomcat镜像创建容器实例(也叫运行镜像)
命令:
docker run -it -p 8080:8080 --name t1 tomcat
-p小写,主机端口:docker容器端口
-P大写,随机分配端口
i:交互
t:终端
d:后台
大写P的例子
docker run it -P tomcat
访问tomcat首页
问题:
解决:Ⅰ.可能没有映射端口或者关闭防火墙Ⅱ.把webapps.list目录换成webapps
免修改本说明
命令:
docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
docker hub上面查找mysql镜像
从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
容器命令出处
使用mysql镜像
命令:
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
问题:可能在使用docker之前,linux已经安装mysql,那此时3306端口就已经被占用了
解决:在使用启动docker命令前用命令ps -ef|grep mysql
观察3306端口是否被占用
观察是否启动成功
建库建表插入数据
外部Win11连接运行在docker上的mysql容器实例服务
问题
问题1:插入中文数据会报错,为什么会报错?docker上默认字符集没有修正
解决办法: docker里面的mysql容器查看,内容如下
命令:SHOW VARIABLES LIKE 'character%';
不要在连接工具里面看,工具会将有些字段自动转换成utf8的格式
在mysql中直接执行该语句会发现全是latin格式
问题2:删除容器后,mysql里面的数据怎么办?
解决办法:实战版本
新建mysql容器实例
命令如下:
docker run -d -p 3306:3306 --privileged=true -v /asule/mysql/log:/var/log/mysql -v /asule/mysql/data:/var/lib/mysql -v /asule/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
//不要粘贴这个只是为了看起来整洁,linux中回车会导致执行
docker run -d -p 3306:3306 --privileged=true
-v /asule/mysql/log:/var/log/mysql
-v /asule/mysql/data:/var/lib/mysql
-v /asule/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
新建my.cnf
通过容器卷同步给mysql容器实例
在上述配置的conf文件夹下创建my.cnf并配置如下内容
[client]
default-character-set=utf8
[mysqld]
collation-server=utf8_general_ci
character-set-server=utf8
重新启动mysql容器实例再重新进入并查看字符编码
重启mysql服务
查看字符编码
再新建库新建表再插入中文测试
从mysql看
从连接工具看(发现中文乱码已经解决)
总结
从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
命令:
docker run -d -p 6379:6379 redis:6.0.8
入门命令
命令挺行:容器卷记得假如–privileged=true
在CentOS宿主机下新建目录/app/redis
命令:
mkdir -p /app/redis
将一个redis.conf文件模板拷贝到/app/redis目录下
/app/redis目录下修改redis.conf文件
开启redis验证 (可选)
允许redis外地连接,必须注释掉# bind 127.0.0.1
将daemonizeyes注释起来或者设置成daemonizeno,因为该配置和docker run 中-d参数冲突会导致容器一直启动失败
如果daemonizeyes,即linux下的redis会在后台运行,此时redis将一直运行,除非手动kill该进程,所以会和docker中的redis启动的端口产生冲突
开启redis数据持久化appendonly yes(可选)
使用redis6.0.8镜像创建容器(也叫运行镜像)
这里用6.0.8一直启动不了换成默认版本就能启动了
docker run -d -p 6379:6379 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data --name myredis redis:latest redis-server /etc/redis/redis.conf
//不要粘贴这个只是为了看起来整洁,linux中回车会导致执行
docker run -d -p 6379:6379 --privileged=true
-v /app/redis/redis.conf:/etc/redis/redis.conf
-v /app/redis/data:/data
--name myredis redis:6.0.8
redis-server /etc/redis/redis.conf
启动成功
测试redis-cli连接
请证明docker启动使用了我们自己指定的配置文件
默认的配置文件的redis库是16个
修改我们指定配置文件redis库的个数
修改之前可以访问0~15的库
访问redis15的库,发现访问不了则是自己的配置文件启动的redis
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。