【docker11】docker安装常用软件

news2024/12/26 22:22:19

docker安装常用软件

1.安装软件说明

框架图
安装软件说明
总体步骤:

  1. 搜索镜像
  2. 拉去镜像
  3. 查看镜像
  4. 启动镜像 - 服务端口映射
  5. 停止容器
  6. 移除容器

1.安装tomcat

  1. docker hub上查找tomcat镜像
    docker hub上查找tomcat镜像

  2. 从docker hub上拉取tomcat镜像到本地
    从docker hub上拉取tomcat镜像到本地

  3. docker images查看是否有拉取到的tomcat
    docker images查看是否有拉取到的tomcat

  4. 使用tomcat镜像创建容器实例(也叫运行镜像)

    命令: docker run -it -p 8080:8080 --name t1 tomcat
    -p小写,主机端口:docker容器端口
    -P大写,随机分配端口
    i:交互
    t:终端
    d:后台

    在这里插入图片描述

    大写P的例子
    docker run it -P tomcat

    大写P的例子

  5. 访问tomcat首页
    问题:
    tomcat首页404
    解决:Ⅰ.可能没有映射端口或者关闭防火墙Ⅱ.把webapps.list目录换成webapps

    1. 删除webapps,并将webapps.dict改成webapps删除webapps,并将webapps.dict改成webapps
    2. 查看当前目录
      查看当前目录
    3. 再次访问首页
      再次访问首页
  6. 免修改本说明

    命令: docker pull billygoo/tomcat8-jdk8
    docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

    免修改本说明

2.安装mysql

  1. docker hub上面查找mysql镜像
    docker hub上面查找mysql镜像

  2. 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
    拉取mysql镜像到本地标签为5.7
    容器命令出处
    容器命令出处

2.1简单版

  1. 使用mysql镜像

    命令: docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

    使用mysql镜像

    问题:可能在使用docker之前,linux已经安装mysql,那此时3306端口就已经被占用了
    解决:在使用启动docker命令前用命令 ps -ef|grep mysql 观察3306端口是否被占用

    在这里插入图片描述
    观察是否启动成功观察是否启动成功1
    观察是否启动成功2

    1. 建库建表插入数据
      建库建表插入数据

    2. 外部Win11连接运行在docker上的mysql容器实例服务
      Win11连接运行在docker上的mysql容器

    3. 问题

      问题1:插入中文数据会报错,为什么会报错?docker上默认字符集没有修正

      插入中文数据报错

      解决办法: docker里面的mysql容器查看,内容如下
      命令: SHOW VARIABLES LIKE 'character%';

      不要在连接工具里面看,工具会将有些字段自动转换成utf8的格式连接工具
      在mysql中直接执行该语句会发现全是latin格式
      mysql

      问题2:删除容器后,mysql里面的数据怎么办?
      解决办法:实战版本

2.2实战版本

  1. 新建mysql容器实例

    命令如下: docker run -d -p 3306:3306 --privileged=true -v /asule/mysql/log:/var/log/mysql -v /asule/mysql/data:/var/lib/mysql -v /asule/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

    //不要粘贴这个只是为了看起来整洁,linux中回车会导致执行
    docker run -d -p 3306:3306 --privileged=true 
    -v /asule/mysql/log:/var/log/mysql 
    -v /asule/mysql/data:/var/lib/mysql 
    -v /asule/mysql/conf:/etc/mysql/conf.d 
    -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
    
  2. 新建my.cnf

    通过容器卷同步给mysql容器实例

    在上述配置的conf文件夹下创建my.cnf并配置如下内容

    [client]
    default-character-set=utf8
    [mysqld]
    collation-server=utf8_general_ci
    character-set-server=utf8
    

    my.cnf

  3. 重新启动mysql容器实例再重新进入并查看字符编码
    重启mysql服务
    重新启动mysql容器实例再重新进入并查看字符编码
    查看字符编码
    查看字符编码

  4. 再新建库新建表再插入中文测试
    从mysql看
    在这里插入图片描述
    从连接工具看(发现中文乱码已经解决)
    从连接工具看

  5. 总结

  • 之前的DB是无效的
  • 修改字符集操作和重启mysql实例之后的DB有效,需要新建
  • docker安装完Mysql并run出容器后,建议修改完字符集编码后再新建mysql库-表-插入数据
  1. 假如将当前容器实例删除,再重新来一次,之前建的db01实例还有吗?
  • 假如有人把该容器实例删除了
    在这里插入图片描述
  • 再启动mysql,发现db01还是存在的
    再启动mysql
  • 结论:容器卷是一定要挂载的,就算把容器实例删除了,只要保存在对应的宿主机上,重新启动容器后依旧能把数据拿回来,才能保证数据的不丢失

3.安装redis

  1. 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8

    命令: docker run -d -p 6379:6379 redis:6.0.8

  2. 入门命令

  3. 命令挺行:容器卷记得假如–privileged=true

  4. 在CentOS宿主机下新建目录/app/redis

    命令: mkdir -p /app/redis

  5. 将一个redis.conf文件模板拷贝到/app/redis目录下
    redis.conf文件模板拷贝

  6. /app/redis目录下修改redis.conf文件

    • 开启redis验证 (可选)

    • 允许redis外地连接,必须注释掉# bind 127.0.0.1
      # bind 127.0.0.1

    • 将daemonizeyes注释起来或者设置成daemonizeno,因为该配置和docker run 中-d参数冲突会导致容器一直启动失败

      如果daemonizeyes,即linux下的redis会在后台运行,此时redis将一直运行,除非手动kill该进程,所以会和docker中的redis启动的端口产生冲突

      demonize no

    • 开启redis数据持久化appendonly yes(可选)

  7. 使用redis6.0.8镜像创建容器(也叫运行镜像)

    这里用6.0.8一直启动不了换成默认版本就能启动了

    docker run -d -p 6379:6379 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data --name myredis redis:latest redis-server /etc/redis/redis.conf

    //不要粘贴这个只是为了看起来整洁,linux中回车会导致执行
    docker run -d -p 6379:6379 --privileged=true 
    -v /app/redis/redis.conf:/etc/redis/redis.conf 
    -v /app/redis/data:/data 
    --name myredis redis:6.0.8 
    redis-server /etc/redis/redis.conf
    

    启动成功
    在这里插入图片描述

  8. 测试redis-cli连接
    测试redis-cli连接

  9. 请证明docker启动使用了我们自己指定的配置文件

    • 默认的配置文件的redis库是16个
      默认的配置文件的redis库是16个

    • 修改我们指定配置文件redis库的个数
      修改我们指定配置文件redis库的个数

    • 修改之前可以访问0~15的库
      修改之前可以访问0~15的库

    • 访问redis15的库,发现访问不了则是自己的配置文件启动的redis
      访问redis15的库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/150357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Security 导致 Spring Boot 跨域失效问题

1、CORS 是什么首先我们要明确,CORS 是什么,以及规范是如何要求的。这里只是梳理一下流程。CORS 全称是 Cross-Origin Resource Sharing,直译过来就是跨域资源共享。要理解这个概念就需要知道域、资源和同源策略这三个概念。域,指…

sahrding-jdbc的雪花算法取模为0或1的问题

工作时无意间发现sahrding-jdbc使用雪花算法生成的id 在某一业务分库分表 永远在那两个库表里面,排查后这里做下分享 环境、配置、问题介绍 16库16表使用的是org.apache.shardingsphere.core.strategy.keygen下面generateKey生成id分库表算法是对16取模生成数据永远在0库0表 0…

如何有效的防护暴力破解和撞库攻击

在网络威胁领域,暴力破解攻击仍然是网络犯罪分子非常喜爱且有利可图的攻击方法。,黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,由于许多用户重复使用相同的用户名和密码,攻击者可以使用撞库攻击获得对…

前缀和算法

目录1.概述2.代码实现2.1.一维前缀和2.2.二维前缀和3.应用本文参考: LABULADONG 的算法网站 1.概述 前缀和算法分为一维和二维,一维前缀和可以快速求序列中某一段的和,而二维前缀和可以快速求一个矩阵中某个子矩阵的和。 2.代码实现 2.1.一…

约拍小程序开发,优化约拍产业路径

随着网红、直播经济的发展,年轻群体对于拍摄服务的需求正在急速增长,与此同时该群体用户又极具个性,很多传统影楼拍摄价格高、拍摄风格固定化、等待时间久,个人摄影师宣传推广难度又大,导致拍摄需求被抑制,…

_Linux多线程-基础篇

文章目录1. 什么是线程Linux中的线程叫做轻量级进程(LWP)2. 线程的优点3. 线程的缺点4. 线程异常5. 线程用途6. Linux进程VS线程单进程7. 总结线程在进程内部执行是OS调度的基本单位。不同视角看待进程轻量级进程1. 什么是线程 在一个程序里的一个执行路…

【Cfeng Work】 Open API的intro和 梳理

OpenAPI 开放平台 内容管理Open API intro腾讯云OpenAPIOpenAPI请求API密钥管理云API签名过程拼接规范请求串 CanonicalRequest拼接待签名字符串计算签名拼接到Authorization中云API签名失败规范Token 和 长期密钥公共参数OpenApi设计AppId、AppSecretsign签名timestamp 时间戳…

制造服务行业需要项目管理软件吗?

伴随着时代的快速发展,电子制造服务行业也正在飞速发展,在日新月异得时代步伐下,科学得管理方法和现代化得管理工具相结合,保证企业得进步与发展。项目管理工具通过构造高效统一的项目管理平台,优化企业管理中存在的问…

win10 conda安装labme安装和使用

1、安装conda 在WIN10中配置conda 1.1miniconda下载 https://docs.conda.io/en/latest/miniconda.html 可以任意选择对应的版本,安装时选择配置路径,以免后期重复配置环境。 1.2.2 在环境变量中添加路径 Win R,打开运行,输入…

在ubuntu系统上用pyinstaller加密打包yolov5项目代码的详细步骤

目录0. 背景1. 创建虚拟环境2. pyinstaller打包2.1. 生成并修改spec文件2.2. 重新生成二进制文件3. 测试4. 加密打包4.1. 创建入口函数main.py4.2. 修改detect.py4.3. 加密生成main.spec文件4.4. 修改main.spec文件4.5. 生成二进制文件4.6. 测试0. 背景 最近需要在ubuntu 18.0…

Payso×OceanBase:云上拓新,开启云数据库的智能托管

日前,聚合支付厂商 Payso( 独角鲨北京科技有限公司)的平台、交易系统引入 OceanBase 原生分布式数据库,实现显著降本增效—— 硬件成本降低 20~30%,查询效率提升 80%,执行效率提升了 30%&#x…

学习IB生物,我们需要知道什么知识点?

学习IB课程的很多同学应该都听说过一个说法:IB生物算是理科中的文科,没有公式推导,只有大量需要记忆的内容,不需要用学习理科的思维去学习,其实这种观点是有误区的。实际上,学习生物这门课将会面对的是一个…

01背包问题详解

目录 1.1二维dp数组 1.2一维dp数组改进 1.3相关例题 1.3.1分割等和子集 1.3.2一和零 1.1二维dp数组 概述:背包的最大重量是固定的,物品的数量,重量也是固定的,并且物品只能放一次,可以选择放或者不放&#xff0c…

Redis 核心原理串讲(中),架构演进之高可用

文章目录Redis 核心原理总览(全局篇)前言一、持久化1、RDB2、AOF3、AOF 重写4、混合持久化5、对比二、副本1、同步模式2、部分重同步三、哨兵1、核心能力2、节点通信总结Redis 核心原理总览(全局篇) 正文开始之前,我们…

【FPGA】Verilog:基本实验步骤演示 | 功能电路创建 | 添加仿真激励 | 观察记录仿真波形

前言: 本章内容主要是演示Vivado下利用Verilog语言进行电路设计、仿真、综合和下载的完整过程、Verilog语言基本运用,电路设计和Test Bench程序的编写、以及实验开发板的使用,通过观察和数据记录理解仿真和FGPA实现的差异。 目录 Ⅰ. 基础知…

考研政治 马原 易混淆知识点

马哲 1. 哲学基本问题 从何者为第一性,分为唯物主义和唯心主义 从是否具有同一性,分为可知论(有同一性)和不可知论(无同一性) 辩证法:联系,发展的观点看世界,认为发展的…

python对接API二次开发高级实战案例解析:百度地图Web服务API封装函数(行政区划区域检索、地理编码、国内天气查询、IP定位、坐标转换)

文章目录前言一、IP定位1.请求URL2.获取IP定位封装函数3.输出结果二、国内天气查询1.请求url2.天气查询封装函数3.输出结果三、行政区划区域检索1.请求url2.区域检索封装函数3.输出结果四、地理编码1.请求url2.地理编码封装函数3.输出结果五、坐标转换1.请求url2.坐标转换封装函…

一文细说Linux虚拟文件系统原理

在 Unix 的世界里,有句很经典的话:一切对象皆是文件。这句话的意思是说,可以将 Unix 操作系统中所有的对象都当成文件,然后使用操作文件的接口来操作它们。Linux 作为一个类 Unix 操作系统,也努力实现这个目标。 虚拟…

CSS 这个就叫优雅 | 多行文本溢出省略

CSS 这个就叫优雅 | 多行文本溢出省略 文章目录CSS 这个就叫优雅 | 多行文本溢出省略一、文本溢出省略方式二、WebKit内核浏览器解决方法🥙三、通用解决方法四、CSS 预处理器封装🥩五、参考资料💘六、推荐博文🍗一、文本溢出省略方…

小样本学习(Few-Shot Learning)训练参数意义

一、常规参数 1.1 epoch 是指所有的训练数据都要跑一遍。假设有6400个样本,在训练过程中,这6400个样本都跑完了才算一个epoch。一般实验需要训练很多个epoch,直到LOSS稳定后才停止。 1.2 batch_size 中文名称是批大小,之前的640…