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": "你好,我是无道"
}
非常完美!
安装kibana
,kibana是可视化操作es的一个在线客户端,非常适合学习的时候使用!
docker pull kibana:7.9.1
注意:版本要和你安装的es版本一致!