有趣生活

当前位置:首页>科技>用docker部署mysql8.0Docker常规软件安装tomcatmysql

用docker部署mysql8.0Docker常规软件安装tomcatmysql

发布时间:2026-06-01阅读(0)

导读本文将讲述如何用Docker安装我们常用的一些软件,包括:tomcat、mysql、redis、nginx.总体步骤搜索镜像:dockersearch镜像名....

本文将讲述如何用Docker安装我们常用的一些软件,包括:tomcat、mysql、redis、nginx.

总体步骤
  • 搜索镜像: docker search 镜像名
  • 拉取镜像: docker pull 镜像名
  • 查看镜像: docker images
  • 启动容器: docker run 镜像名:tag
  • 停止容器: docer stop 容器ID
  • 移除容器: docer rm 容器ID
安装tomcat安装最新版tomcat10.0.14

从dockerhub上查找tomcat镜像:

docker search tomcat

拉取最新镜像:

docker pull tomcat

启动tomcat容器:

docker run -d -p 8080:8080 tomcat

访问:

http://192.168.92.147:8080/

注意:此时是无法访问到首页汤姆猫的,报404,因为新版的tomcat有所改变。

新版已经将webapps目录下项目清空,将原项目放到了新的webapps.dist目录下。

需要做如下改变:

[root@localhost ~]# docker exec -it 34d4273a9447 /bin/bashroot@34d4273a9447:/usr/local/tomcat# cp -r webapps.dist/* webapps/ # 将webapps.dist目录下所有项目拷贝至webappsroot@34d4273a9447:/usr/local/tomcat# exit

此时即可访问:

安装tomcat8.5.75

拉取镜像:

docker pull tomcat:8.5.75

运行容器:

docker run -d -p 8080:8080 tomcat:8.5.75

同样需要执行webapps.dist拷贝:

[root@localhost ~]# docker exec -it 68906c933148 /bin/bashroot@68906c933148:/usr/local/tomcat# cp -r webapps.dist/* webapps/root@68906c933148:/usr/local/tomcat# exit

安装mysql简单版

拉取 mysql5.7 镜像:

docker pull mysql:5.7.37

启动容器:

参考官方说明:https://hub.docker.com/_/mysql?tab=description

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.7.37

进入容器连接mysql测试:

[root@localhost ~]# docker exec -it fd943afcc1ed /bin/bashroot@fd943afcc1ed:/# mysql -uroot -p123456mysql> show databases;mysql> create database d1;mysql> use d1;mysql> create table t1(id int,name char(10)); mysql> insert into t1(1,zhangsan);mysql> select * from t1; ------ ---------- | id | name | ------ ---------- | 1 | zhangsan | ------ ---------- 1 row in set (0.00 sec)mysql> exit

一切看起来ok。

注意:此时插入中文会报错,因为字符集编码原因。

查看字符集(需要在服务器上看,客户端看不准):

mysql> SHOW VARIABLES LIKE character%; -------------------------- ---------------------------- | Variable_name | Value | -------------------------- ---------------------------- | character_set_client | latin1 || character_set_connection | latin1 || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | latin1 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | /usr/share/mysql/charsets/ | -------------------------- ---------------------------- 8 rows in set (0.00 sec)

都是latin1,插入中文会报错,需要改为utf-8

同时此时所有数据都在容器中,一旦容器删掉,所有数据都会消失,接下来我们引入数据卷来处理数据存储问题和字符集问题。

实战版

在宿主机上新建目录用于存储mysql相关数据:

mkdir -p /data/mysql/{data,conf,log}

新建my.cnf

vim /data/mysql/conf/my.cnf

内容如下:

[client]default_character_set=utf8[mysqld]collation_server = utf8_general_cicharacter_set_server = utf8

启动容器:

docker run -d -p 3306:3306 --privileged=true \-v /data/mysql/log:/var/log/mysql \-v /data/mysql/data:/var/lib/mysql \-v /zzyyuse/mysql/conf:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=123456 \--name mysql \mysql:5.7.37

完成。

安装redis简单版

拉取镜像:

docker pull redis:6.0.16

运行命令:

docker run -d -p 6379:6379 redis:6.0.16

测试:

[root@localhost ~]# docker exec -it a227eb2630ec /bin/bashroot@a227eb2630ec:/data# root@a227eb2630ec:/data# redis-cli 127.0.0.1:6379> set k1 v1OK127.0.0.1:6379> get k1"v1"127.0.0.1:6379> pingPONG

实战版

同样简单版也有像安装mysql一样的问题,一旦容器删除,数据就没有了,所以需要解决数据存储问题。

新建目录用于存储redis相关数据:

mkdir -p /data/redis/data

拷贝准备好的 redis.conf 到 /data/redis/ 目录下。 redis6.0.16版本原版redis.conf

修改后的 redis.conf

修改项目包括:

开启验证:requirepass 123456允许远程连接,将 bind 127.0.0.1 注释起来# bind 127.0.0.1开启redis数据持久化,将appendonly no改为appendonly yesappendonly yes

启动容器:

docker run -d -p 6379:6379 --name redis --privileged=true \-v /data/redis/redis.conf:/etc/redis/redis.conf \-v /data/redis/data:/data \redis:6.0.16 redis-server /etc/redis/redis.conf

连接测试:

[root@localhost ~]# docker exec -it 81b27131013e /bin/bashroot@81b27131013e:/data# redis-cli 127.0.0.1:6379> auth 123456OK127.0.0.1:6379> set k1 vaOK127.0.0.1:6379> get k1"va"

完成。

安装nginx简单版

拉取nginx镜像:

docker pull nginx

启动镜像:

-p 80:80 表示将宿主机的80端口映射到容器内的80端口

docker run -d -p 80:80 nginx

访问:

http://192.168.92.147/

实战版

我们虽然已经在简单版部署了nginx,但是用过nginx的都知道,nginx还有很多配置的,如果要改就必须进到容器内去改,这样就很麻烦了,接下来解决这个问题。

拉取镜像:

docker pull nginx

启动一个临时镜像,主要是用于拷贝default.conf这个配置文件。

docker run -d --name temp-nginx nginx

宿主机上新建一个目录用于存储nginx相关的数据:

mkdir -p /data/nginx

从容器中拷贝default.conf

docker cp temp-nginx:/etc/nginx/conf.d/default.conf /data/nginx/

启动正式的nginx容器:

-v /data/nginx/default.conf:/etc/nginx/conf.d/default.conf 将宿主机的 /data/nginx/default.conf 文件挂载到容器内 /etc/nginx/conf.d/default.conf

-p 80:80 将宿主机的80端口映射到容器内的80端口

docker run -d -v /data/nginx/default.conf:/etc/nginx/conf.d/default.conf -p 80:80 --name nginx_prod nginx

接下来我们就可以通过在宿主机上修改 /data/nginx/default.conf 文件,容器内也可以生效,不用再进到容器内部了。

修改示例:

刚刚我们运行了tomcat的容器,接下来修改 /data/nginx/default.conf 文件来反向代理tomcat.

将 /data/nginx/default.conf 文件中:

location / { root /usr/share/nginx/html; index index.html index.htm;}改为:location / { proxy_pass http://192.168.92.147:8080;}

重启nginx容器:

docker restart nginx_prod

再次访问 http://192.168.92.147/ 即可看到tomcat的汤姆猫了。

此外还有其他一些配置,请自行发挥。

TAGS标签:  docker  部署  mysql80Docker  常规  软件  用docker部署m

Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图