1. 安装Docker

一键安装(推荐)

1
2
3
4
5
# 使用阿里云
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 或者使用daocloud 选一个即可
curl -sSL https://get.daocloud.io/docker | sh

手动安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
1. 确定你是CentOS7及以上版本 cat /etc/redhat-release

2. yum安装gcc相关
CentOS7能上外网
yum -y install gcc
yum -y install gcc-c++

3. 卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine
之前版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

4.安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2

5.设置stable镜像仓库
(XXX大坑)yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
可能报错:
5.1 [Errno 14] curl#35 - TCP connection reset by peer
5.2 [Errno 12] curl#35 - Timeout

(推荐)yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

6.更新yum软件包索引
yum makecache fast


7.安装DOCKER
yum -y install docker-ce

8.启动docker
systemctl start docker

9.测试
docker version
docker run hello-world

10.卸载
systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker

配置阿里云加速

1
2
3
4
5
6
7
8
9
10
11
12
1. 新建目录
sudo mkdir -p /etc/docker

2. 添加加速源
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
3. 加载生效
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 安装MYSQL

无脑安装法(不挂载目录)

1
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

挂载目录法

1、下载 mysql 镜像

1
docker pull mysql:5.7

2、创建 Master 实例并启动

1
2
3
4
5
6
7
8
9
10
11
12
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql5.7/log:/var/log/mysql \
-v /mydata/mysql5.7/data:/var/lib/mysql \
-v /mydata/mysql5.7/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明
 -p 3306:3306:将容器的3306端口映射到主机的3306端口
 -v /mydata/mysql5.7/log:/var/log/mysql:将配置文件夹挂在到主机
 -v /mydata/mysql5.7/data:/var/lib/mysql:将日志文件夹挂载到主机
 -v /mydata/mysql5.7/conf:/etc/mysql:将配置文件夹挂载到主机
 -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码

3、修改基本配置

  • vim /mydata/mysql5.7/conf/my.cnf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[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


# 注意:skip-name-resolve一定要加,不然连接mysql会超级慢,加上会跳过域名解析
# skip-character-set-client-handshake 为跳过字符编码客户端与服务端的握手过程

4、修改后重启 Mysql 服务:

docker restart mysql

5、 授权root可以远程访问

1
2
3
4
5
6
7
8
9
1、进入master容器
docker exec -it mysql /bin/bash

2、进入mysql内部 (mysql -uroot -proot)
授权root可以远程访问( 与主从无关,为了方便我们远程连接mysql @后面应该为ip地址,现在是%表示所有ip都可以用root用户访问)
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

flush privileges;

6、自启动

1
docker update --restart=always mysql

3. 安装Redis

无挂载

1
docker run --name redis -p 6380:6379 -d redis

有挂载

1
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -d redis:3.2 redis-server --appendonly yes
  • 设置密码
1
2
3
4
5
6
7
docker exec -it redis bash

cd /usr/local/bin

./redis-cli

CONFIG SET requirepass 123456

4. RocketMQ安装

镜像地址

rocketmq-namesrv地址

https://hub.docker.com/r/rocketmqinc/rocketmq-namesrv

rocketmq-broker地址

https://hub.docker.com/r/rocketmqinc/rocketmq-broker

rocketmq-console-ng地址

https://hub.docker.com/r/styletang/rocketmq-console-ng

Namesrv的安装

执行以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
docker run --name namesrv -p 9876:9876 -e "MAX_POSSIBLE_HEAP=100000000" -d rocketmqinc/rocketmq sh mqnamesrv

mkdir -p /usr/local/rocketmq
cd /usr/local/rocketmq
vim broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 121.40.140.138

docker run --name broker -p 10911:10911 -p 10909:10909 -v /usr/local/rocketmq/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --link namesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" -d rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf



console的安装

1
docker run --name=rocketmq-console -e "JAVA_OPTS=-Drocketmq.namesrv.addr=121.40.140.138:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -d styletang/rocketmq-console-ng

5. 安装ELK

1
2
3
docker pull elasticsearch:5.6.11
docker pull kibana:5.6.11
docker pull logstash:5.6.15

ElasticSearch

1
2
3
4
5
6
7
8
9
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data -d elasticsearch:5.6.11

Kibana

1
2
docker run --name kibana -e ELASTICSEARCH_URL=http://192.168.159.130:9200 -p 5601:5601 \
-d kibana:5.6.11

Logstash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1)、在mydata/logstash中创建logstash.conf文件:文件内容如下

input {
tcp {
port => 4560
codec => json_lines
}
}
output{
elasticsearch {
hosts => ["192.168.159.130:9200"]
index => "applog"
}
stdout { codec => rubydebug }
}


注意:
hosts一定不要写127或者localhost;这样docker容器内部127没有es实例,连不上
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run -d -p 4560:4560 \
-v /mydata/logstash/logstash.conf:/etc/logstash.conf \
--link elasticsearch:elasticsearch \
--name logstash logstash:5.6.15 \
logstash -f /etc/logstash.conf

安装插件:
https://github.com/logstash-plugins
docker exec –it logstash /bin/bash (进入容器内容)
cd /usr/share/logstash/bin (可以whereis logstash找到这个位置)
logstash-plugin install logstash-codec-json_lines


我们对容器做了改变;为了以后方便,可以将这个容器再打包成新的镜像;
可以将修改好的容器制作为镜像,方便下次使用(也可直接推送到镜像仓库);
docker commit logstash logstash_gmall:0.0.1

6. Rabbitmq安装

docker pull rabbitmq:management

1
2
3
4
5
6
7
8
9
10
docker run -d --name rabbitmq --publish 5671:5671 \
--publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \
rabbitmq:management

注:
4369 -- erlang发现口
5672 --client端通信口

15672 -- 管理界面ui端口
25672 -- server间内部通信口
  • 测试
1
2
在web浏览器中输入地址:http://虚拟机ip:15672/
输入默认账号: guest 密码: guest

7. mongo

1
2
3
docker pull mongo:3.2

docker run -p 27017:27017 --name mongo -v /mydata/mongo/db:/data/db -d mongo:3.2

设置密码

1
2
docker -exec -it mongo mongo admin
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'}]});