一、tomcat

1. 镜像下载:docker pull tomcat;这里我使用的是 lastest 最新版本;

docker window下载最新版 docker 最新版本_docker部署tomcat

2. 启动镜像:docker run -d tomcat镜像id;这么启动是因为我们要将挂载的文件复制出来,没有必要那么认真写那么多东西,复制完要挂载的文件,就可以把这次启动生成的容器删除。

docker window下载最新版 docker 最新版本_docker window下载最新版_02

3. 将要挂载的文件复制到 /home/tomcat 下面:docker cp tomcat容器id:/usr/local/tomcat /home/tomcat;这里我们将整个 tomcat 都给他复制出来,当然你也可以只复制 tomcat 里部分目录或文件。如果你对 tomcat 容器里的构造不是很了解,建议使用 docker exec

4. 清除容器:docker rm -f 容器id;

docker window下载最新版 docker 最新版本_docker部署tomcat_03

5. 挂载目录启动镜像:docker run -id -v /home/tomcat:/usr/local/tomcat -p 8080:8080 --name lemon1234_tomcat 镜像id;-v -p --name 这些要是不认识,建议去看基础。

测试一下挂载情况,我们之前也用过 docker 下面的 tocmat,访问时候会出现 404,我们现在来访问一下。

docker window下载最新版 docker 最新版本_docker部署tomcat_04

我们按照之前的方式解决一下,如果不知道怎么做,请看我另外一篇博客:2022 最新版本 Docker 学习_7.Docker 操作命令 - 容器(中)

但是我们不需要再进入到容器里操作,我们直接操作宿主机 /home/tomcat 下面的文件。

docker window下载最新版 docker 最新版本_docker部署tomcat_05

完成后,无需重启容器或者服务,直接刷新页面,稍等几秒即可~~~

docker window下载最新版 docker 最新版本_docker部署redis_06

二、MySQL

1. 镜像下载:docker pull mysql;这里我们还用最新版本,当前 latest 版本是:8.0.29。

docker window下载最新版 docker 最新版本_docker window下载最新版_07

 

docker window下载最新版 docker 最新版本_docker window下载最新版_08

2. 启动镜像:docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql镜像id;同理,这么启动原因和 tomcat 一样,但不同的是多了一个 -e 的东西,这个是没有办法的,因为 MySQL 规定启动的时候要给 root 用户一个默认密码,我这里设置的 123456。

docker window下载最新版 docker 最新版本_docker window下载最新版_09

3. 将要挂载的文件复制到 /home/mysql 下面:/etc/mysql 是配置文件,/var/log 是日志,/var/lib/mysql 是表、数据等。

docker cp  mysql容器id:/etc/mysql /home/mysql
docker cp  mysql容器id:/var/log /home/mysql
docker cp  mysql容器id:/var/lib/mysql /home/mysql

但是这里建议只将 /etc/mysql 挂载出来即可,另外两个我们一般很少查看或修改。

4. 清除容器:docker rm -f mysql容器id;我这里清除容器之后,把不需要挂载的文件删除了,避免一会我们挂载启动的时候,把没有用的东西也挂载到容器中。

5. 挂载目录启动镜像:docker run -id -p 3306:3306 -v /home/mysql/:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 --name lemon1234_mysql mysql镜像id;

docker window下载最新版 docker 最新版本_docker部署tomcat_10

这里测试的话,我们找一个 navicat 或者 dbserver 进行一下连接。

docker window下载最新版 docker 最新版本_docker部署redis_11

这里经过测试是正常可以使用的。(注意,记得登录之后赶紧修改 root 密码 !!!)

三、Redis

1. 镜像下载:docker pull redis;这里我们还用最新版本,当前 latest 版本是:7.0.0。

docker window下载最新版 docker 最新版本_docker window下载最新版_12

 

docker window下载最新版 docker 最新版本_docker window下载最新版_13

2. 启动镜像:docker run -d redis镜像id;启动原因同 tomcat。

docker window下载最新版 docker 最新版本_docker_14

3. 将要挂载的文件搞到 /home/redis 下面

宿主机下执行以下三个命令:mkdir /home/redis

docker cp ddb11ce54717:/data /home/redis/data

mkdir /home/redis/conf

这里我们得去官网弄个 redis.conf 文件,然后把文件上传到宿主机 /home/redis/conf 里面。

redis.conf 文件下载地址:https://github.com/redis/redis/blob/7.0/redis.conf 这里注意一下,我当前拉取的 redis 镜像版本就是 7.0.0,所以 redis.conf 也是找的 7.0,要版本对应。

这个文件下载好之后不要着急上传,修改几个东西。

把 appendonly 该为 yes;把 requirepass 注释打开,并设置一个密码;bind:127.0.0.1 注释掉;(这个 appendonly 是开启 redis 持久化,不懂得去看我 redis 博客)

完成后上传到对应目录即可。

docker window下载最新版 docker 最新版本_docker_15

4. 清除容器:docker rm -f redis容器id;

5. 挂载目录启动镜像:docker run -p 6379:6379 --name lemon1234_redis -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data -id redis镜像id redis-server /etc/redis/redis.conf

!!!但是,在我启动镜像之后,容器一直启动不起来,于是乎就去查看了一下日志,发现了这个问题~

docker window下载最新版 docker 最新版本_docker部署tomcat_16

这里不要慌,我先给解决方法,去 Redis Github 上找了一个 6.2 版本的 redis.conf 配置重新上传到宿主机,然后启动镜像。

docker window下载最新版 docker 最新版本_docker部署redis_17

可以看到,启动成功了。

接下来就测试一波,我们通过工具:Another Redis Desktop Manager 连接一波

docker window下载最新版 docker 最新版本_docker部署tomcat_18

呵,连接之后才发现,原来 Redis 版本是 6.2.6,并不是 hub.docker 上提供的 7.0.0 !!!上面遇到的 repl-diskless-sync-max-replicas 配置是 Redis 7.0+ 的一个配置项,但是呢,错误日志里面写的又是 Redis 6.2.6,但是我在拉取镜像的时候 TAG 里面明明写的是 7.0,所以我凌乱了~~~,这玩意有没有人管一下

四、Nginx

1. 镜像下载:docker pull nginx;这里我们还用最新版本,当前 latest 版本是:1.21.6。

docker window下载最新版 docker 最新版本_docker部署redis_19

 

docker window下载最新版 docker 最新版本_docker部署tomcat_20

2. 启动镜像:docker run -d nginx镜像id;启动原因同 tomcat。

docker window下载最新版 docker 最新版本_docker_21

3. 将要挂载的文件整理到 /home/nginx 下面:/etc/nginx 下面有 nginx 的配置文件等。

docker cp nginx容器id:/etc/nginx /home/nginx

4. 清除容器:docker rm -f nginx容器id;

docker window下载最新版 docker 最新版本_docker部署tomcat_22

5. 挂载目录启动镜像:docker run -id --name lemon1234_nginx -v /home/nginx:/etc/nginx -p 80:80 -p 443:443 nginx镜像id

启动好之后,我们直接访问一下 80 端口

docker window下载最新版 docker 最新版本_docker window下载最新版_23

可以看到,没有问题~~~