Docker安装常用软件

Docker安装常用软件

Docker安装MySQL
简易安装
  • 拉取mysql5.7镜像

    docker pull mysql:5.7
    
  • 生成容器实例

    docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
    
    • -e:设置环境变量
  • 存在问题

    • 中文乱码

    • 容器被删掉之后数据就没了

    • 造成原因:docker默认的字符集存在问题,可以在mysql中使用以下命令查看数据库字符集,返回的字符集中,character_set_database、character_set_server等都为latin1字符集,所以会报错

      show variables like 'character%';
      
生产环境版安装
  • 拉取mysql5.7镜像

    docker pull mysql:5.7
    
  • 生成容器实例

    docker run -d -p 3306:3306 \
               --privileged=true \
               -v /app/mysql/log:/var/log/mysql \   # 映射数据卷,进行数据备份
               -v /app/mysql/data:/var/lib/mysql \
               -v /app/mysql/conf:/etc/mysql/conf.d \
               -e MYSQL_ROOT_PASSWORD=root \
               --name mysql \
               mysql:5.7
    
    • -d:守护进程
    • -v:映射数据卷(可以同时映射多个)
    • -e:设置环境变量
  • 在/app/mysql/conf目录下新建my.cnf,加入字符集规则

    [client]
    default_character_set=utf8
    [mysqld]
    collation_server = utf8_general_ci
    character_set_server = utf8
    
  • 重启容器

    docker restart mysql
    
  • 此时便解决了中文乱码(中文插入报错)问题,同时数据被备份到数据卷中,容器被删除只需要重新生成容器实例即可

Docker安装Redis
  • 拉取docker镜像

    docker pull redis:6.0.8
    
  • 在宿主机创建目录/app/redis

  • 拷贝Redis配置文件redis.conf模板到/app/redis/下,主要修改以下几项配置

    # 开启密码验证(可选)
    requirepass 123
    
    # 允许redis外地连接,需要注释掉绑定的IP
    # bind 127.0.0.1
    
    # 关闭保护模式(可选)
    protected-mode no
    
    # 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败
    daemonize no
    
    # 开启redis数据持久化, (可选)
    appendonly yes
    
  • 启动docker容器

    docker run -d -p 6379:6379 --name redis --privileged=true \
               -v /app/redis/redis.conf:/etc/redis/redis.conf \
               -v /app/redis/data:/data \
               redis:6.0.8 \
               redis-server /etc/redis/redis.conf
    
    • 映射redis配置文件和数据目录
    • 指令redis-server /etc/redis/redis.conf :启动redis时使用映射到docker内部配置文件

版权声明:本文为qq_52751442原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。