docker 容器安装tomcat
docker search tomcat
docker pull tomcat
docker images tomcat
docker run -d -p 8080:8080 --name tom01 tomcat
浏览器访问:
宿主机IP地址+端口号
192.168.XX.XX:8080
如果页面访问tomcat是404访问失败(关闭防火墙)
进入 tomcat容器内 默认在/usr/local/tomcat路径下
执行
rm -rf webapps
mv webapps.dist webapps
然后再次访问 如图所示
PS: Tomcat 最新版本安装会出现这种问题,需要进去删除webapps文件再拷贝新的
![image.png](//dev-img.mos.moduyun.com/20231113/43973987-5425-4760-a96b-c5ccdd151eaf.png)
安装旧版本的tomcat 既不用进入容器内修改文件也可正常访问,
#删除安装的新版tomcat
docker run -d -p 8080:8080 --name tom02 billygoo/tomcat8-jdk8
billygoo/tomcat8-jdk8 表示tomcat8-jdk8是billygoo发布的
浏览器再次访问,即可直接访问成功,不需要再进入容器更改配置文件操作。
PS: 不需要search 或者 pull 下载, run时就会自动pull下载的
docker 容器安装Mysql
容器安装mysql之前,请一定要确认宿主机是否安装过mysql,否侧映射端口时可能会冲突,或者映射别的端口
正常启动mysql的语法规则,(启动之后有一定的问题需要修改,具体的请根据自身需求参考下列“解决”项的方法)
docker pull mysql:5.7
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
-e MYSQL_ROOT_PASSWORD=123456 指定mysql的root登入密码
docker exec -it 容器ID /bin/bash 进入mysql容器
mysql -uroot -p 输入密码进入mysql
PS:
问题一:
mysql安装好之后 插入英文是没问题的,插入中文会报错,需要修改字符集
show variables like 'character%'; 查看字符集设置为 Latin1 需要设置为utf8
问题二:
mysql数据库中的数据备份问题
解决:
按照此命令运行容器MySQL
docker run -d -p 3306:3306 --privileged=true -v /tmp/mysql/log:/var/log/mysql -v /tmp/mysql/data:/var/lib/mysql -v /tmp/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
解决字符集不能插入中文问题。
cd /tmp/mysql/conf/
vim my.cnf 加入如下配置内容,设置服务端和客户端的字符集编码都为utf8
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
docker restart mysql
docker exec -it 容器ID /bin/bash
mysql -uroot -p 进入之后 此时再次插入中文即可识别,不会报错。
show variables like 'character%'; 可以查看字符集是否从Latin1 变为 utf8
为避免误操作删除数据库容器,解决数据库中的数据备份问题。
docker rm -f 容器ID 删除运行中的mysql容器
然后使用相同的起mysql容器的命令进行启动
docker run -d -p 3306:3306 --privileged=true -v /tmp/mysql/log:/var/log/mysql -v /tmp/mysql/data:/var/lib/mysql -v /tmp/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
docker exec -it 容器ID /bin/bash
mysql -uroot -p 此时进入新启动的mysql容器,删除之前的那个MySQL容器中的数据还在。
PS:因为启动容器时 使用 -v 做了备份。(上述启动容器命令中的:-v /tmp/mysql/data:/var/lib/mysql)
docker 容器安装redis
常规安装redis操作步骤(参考)
docker pull redis:6.0.8
docker run -d -p 6379:6379 redis:6.0.8
docker exec -it 8a6ef95d72ce /bin/bash 默认进入/data下
redis-cli 进入redis
生产环境下还请参考下列redis安装步骤。
mkdir -p /app/redis 在宿主机下创建redis的目录
cd /app/redis
cp /xxx/redis.conf /app/redis 这一步需要自己想办法找一个redis的原始配置文件拷贝过来使用
vim /app/redis/redis.conf
修改配置文件
1: 允许redis外地连接
加上注释 # bind 127.0.0.1
protected-mode yes 改成 no (保护模式,可改可不改)
2: daemonize no
将daemonize yes 改成 daemonize no(yes改成no)或者将该行注释掉
因为该配置和docker run 中 -d 参数冲突,会导致容器一直启动失败。
3: redis 持久化 (可开可不开)
appendonly no 改为 yes 即可
docker run -p 6379:6379 --name redis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
使用该命令启动容器,
-v 指定了数据备份及配置文件的共享
redis-server服务的启动指定表示启动后请读取/etc/redis/redis.conf
而/etc/redis/redis.conf配置文件使用-v映射成了宿主机下的/app/redis/redis.conf
相当于更改宿主机的redis.conf 等于修改了容器内的redis.conf,而启动时去读容器内的redis.conf
PS:如果启动不起来,将 -d 选项换成 -it 然后根据报错将配置文件中的报错行注释掉然后再换成-d重新启动
或者下载其他版本的redis 镜像进行尝试。
测试容器内启动redis之后是否连接了宿主机内的配置文件
退出redis容器,修改宿主机内redis.conf 配置文件
将 databases 10 (默认的 16 改成 10)
docker restart redis 重启redis 容器
docker exec -it 容器ID /bin/bash 进入redis容器
redis-cli 进入redis
select 10 select 1-9 会返回ok,如果超过10会报错,表示连接成功