Docker安装软件(MySQL、Redis、Elasticsearch、Kibana、Nginx)

安装MySQL

  • 1、下载镜像文件(建议下载5.7,否则有可能出错)
# 自定义版本则使用如下命令
docker pull mysql:5.7

# 不带tags则默认下载最新的版本
docker pull mysql
  • 2、创建实例并启动
    • -p 3306:3306:将容器的3306端口映射到主机的3306端口
    • -name mysql:指定容器名称
    • -v /mydata/mysql/log:/var/log/mysql:将日志文件挂载到主机
    • -v /mydata/mysql/data:/var/lib/mysql:将数据文件挂载到主机
    • -v /mydata/mysql/conf:/etc/mysql:将配置文件挂载到主机
    • -e MYSQL_ROOT_PASSWORD=Ge051799qi…:初始化root用户的密码
    • -d:指定为后台运行
    • mysql:指定容器的使用镜像(如果有版本要加上版本,如[:5.7])
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=Ge051799qi... \
-d mysql:5.7
  • 启动后,使用docker ps查看status时,为UP代表成功启动,为EXIT则失败

  • 如果正确启动,则跳过这些。步骤二如果使用最新版本(8版本及以上)可能出错,即MySQL启动后使用docker ps查看status是exit。解决方法如下:

    • 1)创建my.cnf配置文件
    touch /mydata/mysql/my.cnf
    
    • 2)my.cnf添加内容
    vim my.cnf
    
    [mysqld]
    user=mysql
    character-set-server=utf8
    default_authentication_plugin=mysql_native_password
    secure_file_priv=/var/lib/mysql
    expire_logs_days=7
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    max_connections=1000
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    
    • 3)创建容器并后台启动
      • –restart=always:当Docker重启时,容器会自动启动
      • –privileged=true:容器中的root真正拥有root权限,否则容器中root只是外部普通用户权限
    docker run \
    --restart=always \
    --privileged=true \
    -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/data:/var/lib/mysql \
    -v /mydata/mysql/my.cnf:/etc/mysql/my.cnf \
    -v /mydata/mysql/conf.d:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql
    
  • 3、修改MySQL配置文件

vim /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
  • 4、重启MySQL,以应用修改的配置文件
docker restart mysql# 设置当Docker重启时自动启动docker update mysql --restart=always

安装Redis

  • 1、下载镜像文件
docker pull redis
  • 2、创建实例并启动

    • 前置工作,在容器外提前创建好redis.conf文件,否则有可能出错
    mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.conf
    
    • 创建Redis实例并启动
docker run -p6379:6379 --name redis \-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis \redis-server /etc/redis/redis.conf
  • 3、修改Redis配置文件
cd /mydata/redis/confvim redis-conf

让Redis启用AOF持久化方式

appendonly yes
  • 4、重启Redis,以应用修改的配置文件
docker restart redis# 设置当Docker重启时自动启动docker update redis --restart=always

安装ElasticSearch

  • 1、下载镜像文件(版本为7.13.2)
docker pull elasticsearch:7.13.2docker pull kibana:7.13.2
  • 2、创建实例并启动

    • 前置工作,在容器外提前创建相关文件夹
    mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/data# 注意yml语法key-value直接要有空格echo "http.host: 0.0.0.0">> /mydata/elasticsearch/config/elasticsearch.yml# 设置权限,否则将会启动报错chmod -R 777 /mydata/elasticsearch/
    
    • 创建ElasticSearch实例并启动
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \-e "discovery.type=single-node" \-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \-d elasticsearch:7.13.2
  • 3、出现报错情况

    • ①Log4j2无法打印日志

      No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
      
      • 原因在于elasticsearch.yml中的echo进去的内容没有加空格,因为此为yml文件,key-value直接应该在冒号后还要加上空格,修改完之后即可解决
    • ②:权限拒绝

      ["org.elasticsearch.bootstrap.StartupException: ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];"
      
      • 将对应文件夹权限修改为777
      chmod -R 777 /mydata/elasticsearch/
      
  • 4、启动Kibana

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.122.129:9 \-p 5601:5601 \-d kibana:7.13.2# 设置当Docker重启时自动启动docker update elasticsearch --restart=alwaysdocker update kibana --restart=always

安装Nginx

  • 1、下载镜像
docker pull nginx
  • 2、创建实例并启动

    • 前置工作

      # 在mydata目录下创建nginx文件夹mkdir nginx# 随便启动一个nginx实例,为了复制其中的配置docker run -p 80:80 --name nginx -d nginx# 将容器内的配置文件拷贝到mydata目录文件夹中docker container cp nginx:/etc/nginx /mydata/# 终止原容器docker stop nginx# 删除原容器docker rm nginx# 在mydata目录下,移动文件夹,目的为了使配制1mv nginx confmkdir nginxmv conf nginx/
      
    • 创建Nginx实例并启动

      docker run -p 80:80 --name nginx \-v /mydata/nginx/html:/usr/share/nginx/html \-v /mydata/nginx/logs:/var/log/nginx \-v /mydata/nginx/conf:/etc/nginx \-d nginx
      
  • 3、设置自动启动

# 设置当Docker重启时自动启动docker update nginx --restart=always
  • 4、测试

    • 访问shopping:80,出现403 Forbidden页面,是因为docker中的nginx没有欢迎页面(只要不是Not Found就正确启动)

    • 自定义html文件夹中的index.html

      <h1>nginx</h1>
      
    • 再次刷新,将会出现nginx,证明启动并访问成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值