目录

一、CentOS 7 安装docker

二、docker安装nginx 

2.1、如果为了方便编辑配置和发布静态资源,可以挂载数据卷

三、docker安装MySQL 

四、docker安装redis

五、docker安装rabbitMQ 

六、docker安装FastDFS

6.1、上传测试:

七、docker安装elasticsearch7.8

7.1、安装ik插件

①方式一:

②方式二:在线安装(慢),如果找到更快的下载地址的话推荐使用

八、docker安装nacos


Docker 概念

  • Docker 是一个开源的应用容器引擎

  • 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)

  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。

  • 容器是完全使用沙箱机制,相互隔离。

  • 容器性能开销极低。

  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)

docker容器虚拟化 与 传统虚拟机比较

  • 相同:

容器和虚拟机具有相似的资源隔离和分配优势

  • 不同:

容器虚拟化的是操作系统,虚拟机虚拟化的是硬件。

传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统

一、CentOS 7 安装docker

# 1、yum 包更新到最新 
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

# 4、 安装docker,出现输入的界面都按 y 
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v

设置阿里云镜像加速器:

mkdir -p /etc/docker
vi  /etc/docker/daemon.json  

daemon.json内容如下:

{
  "registry-mirrors": ["https://k03gsl1f.mirror.aliyuncs.com"]

 重启:

sudo systemctl daemon-reload
sudo systemctl restart docker

二、docker安装nginx 

拉取官方最新版本镜像:

$ docker pull nginx:latest

查看本地镜像:

$ docker images 

运行容器:

docker run --name nginx -d -p 80:80  nginx 

参数说明:

  • --name nginx:容器名称。

  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。

  • -d nginx: 设置容器在在后台一直运行。

2.1、如果为了方便编辑配置和发布静态资源,可以挂载数据卷

创建文件夹 :

cd /opt
mkdir nginx
cd nginx
mkdir conf conf.d html logs

 vi /opt/nginx/html/index.html:

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

vi /opt/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            #修改默认发布路径
            root   /usr/share/nginx/html;  
            index index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

启动容器:

docker run --name nginx -d -p 80:80 -v /opt/nginx/html:/usr/share/nginx/html -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -v /opt/nginx/conf.d:/etc/nginx/conf.d nginx 

外部访问需要打开linux防火墙指定端口

三、docker安装MySQL 

拉取镜像:

$ docker pull mysql:5.7

 查看本地镜像:

$ docker images

自定义容器:

docker network create --driver bridge mybridge

运行容器:

 docker run -itd --net=mybridge --name mysql57  -v /data/mysql:/var/lib/mysql  -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:5.7.7 --lower_case_table_names=1 

参数说明:

  • -v :挂载数据卷,保证容器数据持久化,当删除容器后,数据依然存在。

  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。

  • MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

可能出现的错误:

navicat连接报错,原因是mysql最新版更新来认证插件( caching_sha2_password ),改了后navicat就连接不上,所以需要改回 mysql_native_password 。  

四、docker安装redis

拉取最新版本镜像:

$ docker pull redis:latest

查看本地镜像:

$ docker images 

运行容器:

$ docker run -itd --name redis-test -p 6379:6379 redis --requirepass Dreamtale199432 

参数说明:

-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。

通过 redis-cli 连接测试使用 redis 服务:

$ docker exec -it redis-test /bin/bash 

五、docker安装rabbitMQ 

拉取镜像:

docker pull daocloud.io/library/rabbitmq:3.6.1-management

创建容器:

docker run -d --name rabbitmq3.6.1 -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost  -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin 0aaf0120f505 

参数说明:

-d 后台运行容器;

--name 指定容器名;

-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);

-v 映射目录或文件;

将当前路径下(由pwd)的data文件夹映射到docker中的/var/lib/路径下的的rabbitmq文件夹,这样,docker下的/var/lib/rabbitmq就指向来本机的pwd/data文件夹;

--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);

-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)

可以使用浏览器打开web管理端:http://Server-IP:15672  

六、docker安装FastDFS

1.获取FastDFS镜像:

docker image pull delron/fastdfs

2.运行tracker:

 docker run -dti --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

参数说明:

--network=host 类似于vmware中的桥接模式,容器和宿主机(centos)在同一个网络,但是没有独立ip,和centos同一个ip。

3.运行storage:

docker run -dti --network=host --name storage -e TRACKER_SERVER=120.25.104.87:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage 

注意:如果无法重新运行,可以删除/var/fdfs/storage/data目录下的fdfs_storaged.pid 文件,然后重新运行storage, 注意这个pid文件十分重要!!

6.1、上传测试:

进入容器:

docker exec -it storage /bin/bash

进入etc目录 :

cd /etc

利用自带客户端上传yum.conf:

 /usr/bin/fdfs_upload_file /etc/fdfs/client.conf yum.conf

如果成功,将返回文件id:

group1/M00/00/00/wKj5lF-8YFSAf7GfAAAD-xaDY2s60.conf

返回linux主机,开放端口:

firewall-cmd --zone=public  --permanent --add-port=8888/tcp

firewall-cmd --zone=public  --permanent --add-port=22122/tcp

firewall-cmd --zone=public  --permanent --add-port=23000/tcp

systemctl restart firewalld

 下载测试:

http://requestUrl:8888/group1/M00/00/00/wKj5lGFL8pSAWTJWAAAD-xaDY2s17.conf
 

七、docker安装elasticsearch7.8

拉取原始镜像 :

docker pull elasticsearch:7.8.0 

或者拉取国内镜像(推荐) :

docker pull daocloud.io/library/elasticsearch:7.8.0 

创建数据卷

mkdir -p /usr/local/dockeres/data
mkdir -p /usr/local/dockeres/logs
mkdir -p /usr/local/dockeres/config
cd /usr/local/
chmod -R 777 dockeres 

 将以下链接的配置文件拷贝到linux的/usr/local/dockeres/config/目录下:

有道云笔记https://note.youdao.com/s/QJHqpkQK

有道云笔记https://note.youdao.com/s/SR1rSQ6C

运行容器 :

docker run -di --name=es2 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"  \
    -v /usr/local/dockeres/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    -v /usr/local/dockeres/config/jvm.options:/usr/share/elasticsearch/config/jvm.options \
    -v /usr/local/dockeres/data:/usr/local/dockeres/data \
    -v /usr/local/dockeres/logs:/usr/local/dockeres/logs \
    -v /usr/local/dockeres/plugins/:/usr/share/elasticsearch/plugins/ \
    121454ddad72 

如果安装有一些网络警告,建议重启一下linux  

进入数据卷目录:

cd /usr/local/dockeres/config/

vi jvm.options :

自定义运行内存

-Xms256m
-Xmx256m

vi elasticsearch.yml :

cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*" 

重启ElasticSearch容器 :

docker restart es 

查看日志 :

docker logs es -f 

当出现以下信息,表示已经启动成功 :

2020-09-23T03:28:17.986586995Z {"type": "server", "timestamp": "2020-09-23T03:28:17,978Z", "level": "INFO", "component": "o.e.g.GatewayService", "cluster.name": "docker-cluster", "node.name": "59ecb68242af", "message": "recovered [0] indices into cluster_state", "cluster.uuid": "yNciBGGDTlCb18mUY9ArOA", "node.id": "Ut2NwQA4SsuPSItOFOI3zA"  } 

windows中访问测试 :

http://requestUrl:9200/

注意检查防火墙对应端口是否打开 :

firewall-cmd --list-port
如果未开,手动开一下
firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp

重启
firewall-cmd --reload

7.1、安装ik插件

①方式一:

下载elasticsearch-analysis-ik-7.8.0:

有道云笔记https://note.youdao.com/s/20X6Jmpt

 上传zip到centos 的/usr/local/dockeres/plugins/目录

解压:

unzip elasticsearch-analysis-ik-7.8.0.zip  -d  ./ik

删除压缩包(必须):

rm elasticsearch-analysis-ik-7.8.0.zip 

重启容器:

docker restart es 

②方式二:在线安装(慢),如果找到更快的下载地址的话推荐使用

进入容器:

docker exec -it es /bin/bash

在线下载并安装(大概30分钟) :

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip 

退出容器 :

exit 

重启ElasticSearch容器:

docker restart es 

八、docker安装nacos

拉取镜像 :

docker pull nacos/nacos-server:1.2.1 

启动容器 :

docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server:1.2.1 

测试: http://requestUrl:8848/nacos/index.html

nacos的默认端口号是8848,默认账号密码是nacos/nacos。至此安装已经结束。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐