首页 专题 文章 代码 归档

【Docker】Docker安装各类软件(MySQL、Redis)

1. Docker的几个命令

直接删除带none的镜像,直接报错了。提示先停止容器。

docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') #停止容器
docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }')  #删除容器
docker rmi $(docker images | grep "none" | awk '{print $3}') #删除镜像

再删除镜像:

docker rmi $(docker images | grep "none" | awk '{print $3}')

2. 安装Mysql

1、拉取镜像

docker pull mysql:5.7.31

2、创建主宿机映射目录

也即保存的数据文件放到哪里?

mkdir -p /data/mysql/etc/mysql #配置文件映射
mkdir -p /data/mysql/data #数据文件映射

3、运行容器

docker run -di --name=mysql57 \
-v /data/mysql/conf:/etc/mysql \
-v /data/mysql/data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.31 \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

最好添加,因为这是解决中文乱码问题的关键!


安装mariadb:

docker run -di --name=mariadb \
-v /data/mysql:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 mariadb \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. 安装Redis

1、拉取

docker pull redis

2、创建本地目录

mkdir -p /data/redis/data

3、获取配置文件

从官网这里获取redis.conf配置文件

并作自己需要的修改,【可以使用wget等命令直接下载到linux】

常用解释:

  • bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
  • protected-mode no #默认yes,开启保护模式,限制为本地访问
  • daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
  • dir ./ #输入本地redis数据库存放文件夹(可选)
  • appendonly yes #redis持久化(可选)

4、运行

docker run -itd --name redis -p 6379:6379 \
-v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
redis

命令解释:

  • -p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
  • --name myredis 指定该容器名称,查看和进行操作都比较方便。
  • -v 挂载目录,规则与端口映射相同。
  • -d redis 表示后台启动redis
  • redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
  • appendonly yes 开启redis 持久化

4. 安装Nginx

docker run -d --name nginx \
-p 80:80 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf.d:/etc/nginx/conf.d \
nginx

5. 安装Mariadb

docker run -di --name=mariadb \
-v /data/mysql:/var/lib/mysql \
-p 13306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 mariadb \
--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

6. Php&&Nginx

1、拉取PHP

docker pull php

拉取Nginx

docker pull nginx

2、运行Nginx

docker run -d --name nginx \
-p 8080:80 \
-v /tmp:/usr/share/nginx/html 
nginx

## 

docker run -d --name nginx \
-p 8080:80 \
-v /data/www/html:/usr/share/nginx/html \
-v /data/www/conf.d:/etc/nginx/conf.d \
nginx

3、运行PHP

docker run -d \
-v /data/www/html:/usr/share/nginx/html \
--name php-fpm \
php:7.3-fpm

4、查看IP

docker inspect php-fpm | grep "IPAddress"

5、配置文件

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           html;
        fastcgi_pass   "172.17.0.5:9000";
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

### 将上面的172.17.0.5改成需要的Ip地址即可!

在本地新建上面的文件default.conf

然后复制进容器:

docker cp ./default.conf 7b3ef3dfa4a9:/etc/nginx/conf.d/default.conf

并重启:docker restart nginx

7. 安装ElasticSearch

docker pull elasticsearch:7.9.1

创建一个网络,和其他服务关联,比如kibana

docker network create network-es # 创建一个网络,和其他服务关联,比如kibana

运行一个容器:

docker run -d --name es -p 19200:9200 -p 19300:19300 \
-v "/data/es/plugins:/usr/share/elasticsearch/plugins" \
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms2g -Xmx2g" elasticsearch:7.9.1

安装IK分词器

docker exec -it f108dcfe4029 bash ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.1/elasticsearch-analysis-ik-7.9.1.zip

其中f108dcfe4029是你的容器ID

如果报内存不足,那么将IK分词下载到本地,再复制到容器中也可(然后解压到plugins的ik目录[ik目录需自行建立])!

好了,测试结果:

POST http://124.70.54.83:19200/_analyze
Content-Type: application/json

{
  "analyzer": "ik_smart",
  "text": "你好,我是无道"
}

截图-1600843035

非常完美!


安装kibana,kibana是可视化操作es的一个在线客户端,非常适合学习的时候使用!

docker pull kibana:7.9.1

注意:版本要和你安装的es版本一致!

此文阅读完毕,您可以:分享
二维码图片 扫描关注我们哟