【docker11】docker安装常用软件

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的库

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
群晖 Docker 是群晖公司提供的一种容器化技术,它可以帮助用户在群晖 NAS 上快速部署和管理各种应用程序。通过使用 Docker,用户可以将应用程序及其依赖项打包成一个独立的容器,使其可以在不同的环境中运行,而不需要担心环境配置的问题。 群晖 Docker 的主要用途包括: 1. 应用程序隔离:Docker 可以将不同的应用程序隔离在独立的容器中,每个容器都有自己的文件系统、网络和进程空间,避免了应用程序之间的冲突和干扰。 2. 快速部署:使用 Docker,用户可以快速地部署各种应用程序,只需要在容器中配置好应用程序及其依赖项,然后将容器部署到目标环境中即可,大大简化了部署过程。 3. 灵活扩展:Docker 允许用户根据需要创建多个相同或不同的容器实例,以满足不同的需求。用户可以根据负载情况动态地增加或减少容器实例,实现应用程序的弹性扩展。 4. 简化开发环境:使用 Docker,开发人员可以在本地创建一个与生产环境一致的容器,以便于开发、测试和调试应用程序。这样可以避免由于开发环境与生产环境不一致而导致的问题。 5. 资源利用率优化:Docker 可以在物理服务器上运行多个容器,每个容器都可以独立分配和管理资源,从而提高服务器的资源利用率。 总之,群晖 Docker 提供了一种方便、灵活和高效的方式来部署和管理应用程序,使用户能够更好地利用群晖 NAS 的资源,并提高应用程序的可靠性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值