Docker基础篇之Docker常规软件安装

news/2024/7/7 0:56:28

文章目录

    • 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


http://lihuaxi.xjx100.cn/news/2196319.html

相关文章

加密经济浪潮:探索Web3对金融体系的颠覆

随着区块链技术的快速发展,加密经济正在成为全球金融领域的一股新的浪潮。而Web3作为下一代互联网的代表,以其去中心化、可编程的特性,正深刻影响着传统金融体系的格局和运作方式。本文将深入探讨加密经济对金融体系的颠覆,探索We…

JavaScript的核心语法

JavaScript JavaScript:JavaScript的组成:核心语法:Hello:变量:JS的基本数据类型:特殊点: 数组:流程控制语句:函数:函数的重载:函数的递归:预定义…

C++ AVL树 详细讲解

目录 一、AVL树的概念 二、AVL树的实现 1.AVL树节点的定义 2.AVL树的插入 3.AVL树的旋转 4.AVL树的验证 三、AVL树的性能 四、完结撒❀ 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但 如果数据有序或接近有序二叉搜索树将退化为单支树,查 …

Alsa UCM

Alsa Use Case Manager(用例管理器)描述如何为某些用例(如 “播放音频”、“通话”)设置 mixer 混频器。它还描述如何修改 mixer 混频器状态以将音频路由到某些输出和输入,以及如何控制这些设备。 这基本上涵盖了 Pul…

Python | 开房门(map)

常把map称之为映射,就是将一个元素(通常称之为key键)与一个相对应的值(通常称之为value)关联起来 通常用**字典dict**实现了映射这种数据结构 字典也是使用{}来包裹(set也是{}),每…

5 分钟内构建一个简单的基于 Python 的 GAN

文章目录 一、说明二、代码三、训练四、后记 一、说明 生成对抗网络(GAN)因其能力而在学术界引起轩然大波。机器能够创作出新颖、富有灵感的作品,这让每个人都感到敬畏和恐惧。因此,人们开始好奇,如何构建一个这样的网…

YOLOv8---seg实例分割(制作数据集,训练模型,预测结果)

YOLOv8----seg实例分割(制作数据集,训练模型,预测结果) 内容如下:【需要软件及工具:pycharm、labelme、anaconda、云主机(跑训练)】 1.制作自己的数据集 2.在yolo的预训练模型的基础…

windows11搭建 stable-diffusion-webui

2024年5月22日23:46:57 建议电脑配置 电脑配置: Intel Core™ Ultra 5 125H 1.20 GHz 32.0 GB (31.6 GB 可用) 系统:windows11 注意:最好挂上外网,或者设置好访问github的dns,不然很可能失败 1,安装 An…