1. 镜像下载:docker pull tomcat;这里我使用的是 lastest 最新版本;
2. 启动镜像:docker run -d tomcat镜像id;这么启动是因为我们要将挂载的文件复制出来,没有必要那么认真写那么多东西,复制完要挂载的文件,就可以把这次启动生成的容器删除。
3. 将要挂载的文件复制到 /home/tomcat 下面:docker cp tomcat容器id:/usr/local/tomcat /home/tomcat;这里我们将整个 tomcat 都给他复制出来,当然你也可以只复制 tomcat 里部分目录或文件。如果你对 tomcat 容器里的构造不是很了解,建议使用 docker exec 命令进去看一眼。
4. 清除容器:docker rm -f 容器id;
5. 挂载目录启动镜像:docker run -id -v /home/tomcat:/usr/local/tomcat -p 8080:8080 --name lemon1234_tomcat 镜像id;-v -p --name 这些要是不认识,建议去看基础。
测试一下挂载情况,我们之前也用过 docker 下面的 tocmat,访问时候会出现 404,我们现在来访问一下。
我们按照之前的方式解决一下,如果不知道怎么做,请看我另外一篇博客:2022 最新版本 Docker 学习_7.Docker 操作命令 - 容器(中)
但是我们不需要再进入到容器里操作,我们直接操作宿主机 /home/tomcat 下面的文件。
完成后,无需重启容器或者服务,直接刷新页面,稍等几秒即可~~~
1. 镜像下载:docker pull mysql;这里我们还用最新版本,当前 latest 版本是:8.0.29。
2. 启动镜像:docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql镜像id;同理,这么启动原因和 tomcat 一样,但不同的是多了一个 -e 的东西,这个是没有办法的,因为 MySQL 规定启动的时候要给 root 用户一个默认密码,我这里设置的 123456。
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;
这里测试的话,我们找一个 navicat 或者 dbserver 进行一下连接。
这里经过测试是正常可以使用的。(注意,记得登录之后赶紧修改 root 密码 !!!)
1. 镜像下载:docker pull redis;这里我们还用最新版本,当前 latest 版本是:7.0.0。
2. 启动镜像:docker run -d redis镜像id;启动原因同 tomcat。
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 博客)
完成后上传到对应目录即可。
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
!!!但是,在我启动镜像之后,容器一直启动不起来,于是乎就去查看了一下日志,发现了这个问题~
这里不要慌,我先给解决方法,去 Redis Github 上找了一个 6.2 版本的 redis.conf 配置重新上传到宿主机,然后启动镜像。
可以看到,启动成功了。
接下来就测试一波,我们通过工具:Another Redis Desktop Manager 连接一波
呵,连接之后才发现,原来 Redis 版本是 6.2.6,并不是 hub.docker 上提供的 7.0.0 !!!上面遇到的 repl-diskless-sync-max-replicas 配置是 Redis 7.0+ 的一个配置项,但是呢,错误日志里面写的又是 Redis 6.2.6,但是我在拉取镜像的时候 TAG 里面明明写的是 7.0,所以我凌乱了~~~,这玩意有没有人管一下
1. 镜像下载:docker pull nginx;这里我们还用最新版本,当前 latest 版本是:1.21.6。
2. 启动镜像:docker run -d nginx镜像id;启动原因同 tomcat。
3. 将要挂载的文件整理到 /home/nginx 下面:/etc/nginx 下面有 nginx 的配置文件等。
docker cp nginx容器id:/etc/nginx /home/nginx
4. 清除容器:docker rm -f nginx容器id;
5. 挂载目录启动镜像:docker run -id --name lemon1234_nginx -v /home/nginx:/etc/nginx -p 80:80 -p 443:443 nginx镜像id
启动好之后,我们直接访问一下 80 端口
可以看到,没有问题~~~
这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com