当前位置:   article > 正文

【docker11】docker安装常用软件_docker必装软件

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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  2. 新建my.cnf

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

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

    [client]
    default-character-set=utf8
    [mysqld]
    collation-server=utf8_general_ci
    character-set-server=utf8
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/160459
推荐阅读
相关标签
  

闽ICP备14008679号