文章目录
- 1. 总体步骤
- 2. 安装tomcat
- 3. 安装Mysql
- 4. 安装Redis
1. 总体步骤
安装软件的总体步骤如下所示:
- 搜索镜像
- 拉取镜像
- 查看镜像
- 启动镜像
- 停止容器
- 移除容器
2. 安装tomcat
- docker hub上查找tomcat镜像
或者使用一下命令查找:
docker search tomcat
- 拉取tomcat镜像
docker pull tomcat
然后使用docker images
查看下载好的镜像;
- 使用tomcat镜像创建容器实例
docker run -it -p 8080:8080 tomcat
-p:小写:主机端口:docker容器端口
-P:大写:随机分配端口
i:交互
t:终端
d:后台
- 访问tomcat首页
发现访问状态为404,这是因为新版本的tomcat做了一些更新,我需要修改容器的一些配置
进入容器:
docker exec -it d5349c9071c3 /bin/bash
ls -l
Tomcat的主页面是放在webapps下面的
可以发现webapps下面什么都没有,其实真正的内容在webapps.dist中
我们删除掉webapps,并将webapp.dist修改为webapps
rm -r webapps
mv webapps.dist webapps
再次访问Tomcat首页:
- 停止并删除
docker stop d5349c9071c3
docker rm d5349c9071c3b5c004aa342d4e0ace2086c7461177d89cb67c569e9b97f268bc
3. 安装Mysql
- 拉取mysql镜像
docker pull mysql
docker images
- 使用mysql镜像创建容器
docker run -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
然后我们进入容器实例里面:
docker exec -it 3393815aff78 /bin/bash
mysql -uroot -p
现在我们使用navicat连接mysql:
现在创建一个库和表:
然后我插入数据:
以上docker就成功部署了mysql服务,现在思考一个问题,如果我们一个mysql容器里面装的数据很重要,但是有人给这个容器给删除了怎么办?这种情况在线上是很严重的,为了保证容器被删除mysql数据不丢失,我们需要数据卷挂载技术。
重新新建mysql实例
docker run -d -p 3308:3306 \
--privileged=true \
-v /Users/jackchai/Desktop/lottory_docker/learndocker/mysql/log:/var/log/mysql \
-v /Users/jackchai/Desktop/lottory_docker/learndocker/mysql/data:/var/lib/mysql \
-v /Users/jackchai/Desktop/lottory_docker/learndocker/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql
然后我们新建My.cnf,并通过容器卷同步给mysql容器实例(解决中文乱码问题):
在conf目录下创建my.cnf
文件:
[client]
default_character_set=utf8
[mysqlId]
collation_server=utf8_general_ci
character_set_server=utf8
然后重启一下mysql。
docker restart mysql
4. 安装Redis
- 拉取镜像
- 启动容器
docker run -d -p 6379:6379 redis
然后我们进入容器内部:
docker exec -it 6f3fc0e73503 /bin/bash
和mysql一样,一旦容器删除数据就会丢失,所以我们同样需要挂载数据卷
#将redis的配置文件拷贝到本地(配置自行修改)
cp /myredis/redis.conf /app/redis/
#创建redis容器
docker run -d -p 6379:6379 --privileged=true \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf
#连接启动redis-cli