Centos下使用Docker安装软件
一、安装Docker
安装
查看官方文档,找到在CentOS上安装的指南
# 1.卸载旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2. 使用存储库安装(官方推荐)
sudo yum install -y yum-utils
# 3.设置镜像的仓库-阿里云
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
sudo yum makecache fast
# 4.安装dokcer相关的额 docker-ce 社区版 ee 企业版
sudo yum install docker-ce docker-ce-cli containerd.io
# 5.设置docker开启自启动
systemctl enable docker.service
# 5.启动Docker
sudo systemctl start docker
# 6.查看Docker的版本信息
docker version
阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://moz4bto9.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 的卸载
# 1. 卸载 Docker Engine、CLI 和 Containerd 包:
sudo yum remove docker-ce docker-ce-cli containerd.io
# 2. 主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有镜像、容器和卷:
sudo rm -rf /var/lib/docker
# /var/lib/docker docker默认的工作路径
sudo rm -rf /var/lib/containerd
# 3 必须手动删除任何已编辑的配置文件。
二、Docker安装部署Mysql
2.1 查看mysql镜像版本:https://hub.docker.com/_/mysql?tab=tags
2.2 我选的是5.x的版本,下载镜像
docker pull mysql:5.7.37
2.3 创建挂载文件
mkdir -p /root/docker/mysql
#启动镜像
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=12345 --name mysql mysql:5.7.37
#将容器内部文件copy到外部
docker cp mysql:/etc/mysql /root/docker/mysql/conf
docker cp mysql:/var/lib/mysql /root/docker/mysql/data
#移除容器
docker rm -f mysql
2.4 通过挂载开启容器
docker run -d -p 3306:3306 \
-v /root/docker/mysql/conf:/etc/mysql/ \
-v /root/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=12345 \
--name mysql \
mysql:5.7.37
-e MYSQL_ROOT_PASSWORD=12345 设置mysql登录密码为12345 默认登录名为root
–name mysql 设置容器名为mysql
2.5 进入mysql容器内部
docker exec -it 容器名或容器id bash
三、Docker 安装 Redis
3.1查看redis对应的镜像版本:https://hub.docker.com/_/redis?tab=tags
3.2我选的是5.x的版本,下载镜像
docker pull redis:5.0.14
3.3 创建redis的挂载目录
# 创建挂载目录
mkdir -p /root/docker/redis/conf
mkdir -p /root/docker/redis/data
3.4 查看redis配置文件: https://gitee.com/mirrors/redis/blob/unstable/redis.conf
# 创建编译redis配置文件
vim /root/docker/redis/conf/redis.conf
# 复制以上网址中的redis.conf内容
3.4 修改启动默认配置(从上至下依次)
bind 127.0.0.1 -::1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize yes #默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
appendonly yes #默认no,改为yes意为开启redis持久化(可选)
3.5 docker 启动redis容器
docker run -d -p 6379:6379 \
-v /root/docker/redis/redis.conf:/etc/redis/redis.conf \
-v /root/docker/redis/data:/data \
--name redis \
redis:5.0.14 redis-server /etc/redis/redis.conf
字段讲解
-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
–name redis01 指定该容器名称,查看和进行操作都比较方便。
-v 挂载目录,规则与端口映射相同。
-d 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
4.进入redis容器的命令台
docker exec -it 容器名或容器id redis-cli
四、docker安装RocketMQ
4.1查看RocketMQ版本:https://hub.docker.com/r/foxiswho/rocketmq/tags
4.2 我选的是4.5.1版本,下载启动NameServer容器:
docker run -d -p 9876:9876 \
--name rmqserver \
foxiswho/rocketmq:server-4.5.1
4.3 下载并且部署broker容器
docker run -d -p 10911:10911 -p 10909:10909 \
--link rmqserver:namesrv \
-e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt" \
-e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m" \
--name rmqbroker \
foxiswho/rocketmq:broker-4.5.1
4.3 修改配置文件
# 进入容器
docker exec -it rmqserver bash
# 修改配置文件
vim /etc/rocketmq/broker.conf
# 增加这一行,设置broker节点所在服务器的ip地址(公网IP)
brokerIP1 = 公网ip
# 退出容器
exit
# 重启broker
docker restart rmqbroker
4.4 下载且启动启动rocketmq console(网页控制台)
docker run -d -p 8180:8080 \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=namesrv:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
--link rmqserver:namesrv \
--name rmqconsole \
-t styletang/rocketmq-console-ng
**4.5 通过网址查看: ip:8180 **
五、Docker安装Nginx
5.1 查看nginx版本:https://hub.docker.com/_/nginx?tab=tags
5.1 我选的是1.14.2 这个版本,下载nginx
docker pull nginx:1.14.2
5.2 准备挂载目录
# 创建挂载目录
mkdir -p /root/docker/nginx/conf
mkdir -p /root/docker/nginx/log
# 运行容器
docker run --name nginx -d nginx:1.14.2
# 将容器中内容复制到挂载目录
docker cp nginx:/etc/nginx/nginx.conf /root/docker/nginx/conf/nginx.conf
docker cp nginx:/var/log/nginx /root/docker/nginx/log
docker cp nginx:/usr/share/nginx/html /root/docker/nginx
# 删除容器
docker rm -f nginx
5.3运行容器
# 挂载
docker run -d -p 8080:80 \
-v /root/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/docker/nginx/log:/var/log/nginx \
-v /root/docker/nginx/html:/usr/share/nginx/html \
--name nginx \
nginx:1.14.2
5.4进入/home/docker/nginx/conf/目录下,修改配置文件
vim /root/docker/nginx/conf/nginx.conf
复制粘贴以下内容
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
# 全局配置
events {
worker_connections 1024;
}
# http配置
http {
# css,js界面渲染
include mime.types;
default_type application/octet-stream;
# ip限流:1秒只能访问一次
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
# 负载均衡配置网关
upstream gateway{
# 通过weight设置权重
server 101.43.122.162:10003 weight=1;
}
# 前端: 静态页面
server{
listen 80; # 端口
server_name localhost; # 主机ip地址
# 错误信息
error_page 403 404 405 500 502 503 504 /error;
location /error{
default_type 'application/json';
set $ret_body '{"code": "-1","messsge": "系统繁忙,请稍后再试"}';
return 200 $ret_body;
}
location / {
root /usr/share/nginx/html/dist-user;
try_files $uri $uri/ @router;
index index.html index.htm;
}
# 配置管理员静态资源
location /admin/{
alias /usr/share/nginx/html/dist-a;
try_files $uri $uri/ /dist-admin/index.html;
index index.html index.htm;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 配置vue的请求位置
location /prod-api/{
# 超过访问频次而且缓冲区也满了的时候就会直接返回503
limit_req zone=mylimit burst=1 nodelay;
proxy_pass http://gateway/;
}
}
}
六、Docker 安装部署Sentinel
6.1 查看版本:https://hub.docker.com/r/bladex/sentinel-dashboard/tags
6.2 下载并且启动容器
docker run -d -p 8858:8858 \
--name sentinel \
bladex/sentinel-dashboard
七、Docker 安装部署Canal
7.1 安装Canal
7.1.1 查看版本:https://hub.docker.com/r/canal/canal-server/tags
7.1.2下载镜像
docker pull canal/canal-server:v1.1.5
7.1.3 创建存储配置文件地址,构建配置文件
mkdir -p /root/docker/canal
#启动镜像
docker run --name canal -d canal/canal-server:v1.1.5
#找到文件位置后 exit退出容器 将容器内部文件copy到外部
docker cp canal:/home/admin/canal-server/conf/canal.properties /root/docker/canal
docker cp canal:/home/admin/canal-server/conf/example/instance.properties /root/docker/canal
#移除容器
docker rm -f canal
7.1.4修改配置文件instance.conf
vim /root/docker/canal/instance.properties
# 编辑instance.conf
# 添加以下
canal.instance.mysql.slaveId=10
# 修改以下: 数据库ip:端口
canal.instance.master.address= x.x.x.x:xxxx
7.1.5 运行容器,将配置文件挂载到之前新建的目录中
docker run -d -p 11111:11111 \
-v /root/docker/canal/instance.properties:/home/admin/canal-server/conf/example/instance.properties\
-v /root/docker/canal/canal.properties:/home/admin/canal-server/conf/canal.properties \
-v /root/docker/canal/logs:/home/admin/canal-server/logs/ \
--name canal \
canal/canal-server:v1.1.5
7.2 数据库mysql 配置
7.2.1 进入mysql容器
docker exec -it mysql-bsks bash
7.2.2 连接数据库
mysql -uroot -p12345
7.2.3 创建用于同步的账号
# 新建用户 用户名:canal 密码:canal
mysql>create user canal identified by 'canal';
mysql>ALTER USER 'canal'@'%' identified with mysql_native_password BY 'canal';
# 授权
mysql>grant select, replication slave,replication client on *.* to 'canal'@'%';
# 刷新MySQL的系统权限相关表
mysql>flush privileges;
7.2.4 修改mysql挂载目录下的配置文件my.cnf(容器中位置:/etc/mysql/conf.d/my.cnf)
# server_id不重复即可,不要和canal的slaveId重复
server_id=1
# 开启binlog
log_bin = mysql-bin
# 选择row模式
binlog_format = ROW
7.2.5 重启mysql容器
docker restart mysql
八、 Docker安装ElasticSearch
2.2.1 查看ElasticSearch的docker版本
网址:https://hub.docker.com/_/elasticsearch?tab=tags
2.2.1 下载并且安装ElasticSearch
创建挂载目录
# 创建挂载目录
mkdir -p /root/docker/elasticsearch/config
mkdir -p /root/docker/elasticsearch/data
mkdir -p /root/docker/elasticsearch/plugins
# 给挂载目录添加权限
chmod -R 777 /home/docker/elasticsearch/plugins
下载ElasticSearch镜像
docker pull elasticsearch:8.2.0
复制配置文件到挂载目录
# 运行容器
docker run -d -P --name elasticsearch elasticsearch:8.2.0
# 复制配置文件
docker cp elasticsearch:/usr/share/elasticsearch/config/. /root/docker/elasticsearch/config
# 删除容器
docker rm -f elasticsearch
启动容器
docker run -d -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /root/docker/elasticsearch/config/:/usr/share/elasticsearch/config \
-v /root/docker/elasticsearch/data:/usr/share/elasticsearch/data \
-v /root/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
--name elasticsearch \
elasticsearch:8.2.0
-d
:表示在后台运行容器;-p
:将容器的端口 9200(TCP 请求端口) 和 9300(HTTP 请求端口)映射到主机上对应的端口;-e
:设置环境变量;-v
:挂载目录;--name
:设置容器名称;elasticsearch:8.2.0
:容器使用的镜像名称;如果想要设置容器开机自启,可在终端输入以下内容
docker update elasticsearch --restart=always
配置跨域
vim /root/docker/elasticsearch/config/elasticsearch.yml
# 添加以下内容
# 支持跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
访问elasticsearch
要开启9200端口,访问路径:http://ip:9200
2.2.3 安装kibana
创建挂载目录
mkdir -p /root/docker/kibana/config
下载镜像
docker pull kibana:8.2.0
设置挂载目录
# 运行容器
docker run -d -P --name kibana kibana:8.2.0
# 复制配置文件
docker cp kibana:/usr/share/kibana/config/. /root/docker/kibana/config
# 删除容器
docker rm -f kibana
运行容器
将以下命令中的xxx换成 elasticsearch 服务运行的 IP 地址
docker run -d -p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://xxx:9200 \
--name kibana \
kibana:8.2.0
-d:表示在后台运行容器;
-p 5601:5601:将容器的 5601 端口映射到主机的 5601 端口上;
-e ELASTICSEARCH_HOSTS:设置环境变量,ELASTICSEARCH_HOSTS 指定了 elasticsearch 服务运行的 IP 地址;
–name kibana:设置容器名称;
kibana:7.6.2:容器使用的镜像名称;
访问
访问路径:http://ip:5601/app/kibana
汉化
vim /root/docker/kibana/config/kibana.yml
# 在最后一行添加
i18n.locale: "zh-CN"
九、Docker安装Nacos
9.1 查看版本:https://hub.docker.com/r/nacos/nacos-server/tags
9.2 下载镜像
docker pull nacos/nacos-server:v2.1.0
9.3 mysql创建存储nacos配置的数据库
create database nacos_config
9.4 初始化数据库,导入初始化文件nacos-db.sql
9.5 创建容器
将以下中的x.x.x.x换成数据库ip地址,root换成数据库用户名,12345改成数据库用户名对应的密码
docker run -d -p 8848:8848 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=x.x.x.x \
-e MYSQL_SERVICE_PORT=330 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=12345 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e JVM_XMN=256m \
--network host \
--name nacos \
nacos/nacos-server:v2.1.0
-e MODE=standalone 使用 standalone模式(单机模式)
-e SPRING_DATASOURCE_PLATFORM=mysql 选择mysql数据库
-e MYSQL_SERVICE_HOST=x.x.x.x 数据库地址
-e MYSQL_SERVICE_PORT=3306 数据库端口
-e MYSQL_SERVICE_USER=root 数据库用户名
-e MYSQL_SERVICE_PASSWORD=12345 数据库密码
-e MYSQL_SERVICE_DB_NAME=nacos_config 数据库名称
-e JVM_XMS=256m
-e JVM_XMX=256m
-e JVM_XMN=256m
–network host 将Linux宿主机的IP赋值给容器IP
–name nacos 设置容器名为 nacos
–restart=always 总是重启,加上这句话之后,若重新启动Docker,该容器也会重新启动
9.6 开启端口
# 查询8848端口防火墙是否开启,返回no表示没有开启
firewall-cmd --query-port=8848/tcp
# 防火墙开启8848端口
firewall-cmd --add-port=8848/tcp --permanent
# 重载防火墙开放端口
firewall-cmd --reload
**注:**Nacos2.x版本新增了gRPC的通信方式,因此需要新增占用两个端口(9848,9849),并且这两个端口必须开放,否则客户端就连接不上Nacos服务。
详情地址:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html
9.7 访问nacos
默认用户名和密码都是nacos, 访问地址: ip:8848/nacos
RD=12345 数据库密码
-e MYSQL_SERVICE_DB_NAME=nacos_config 数据库名称
-e JVM_XMS=256m
-e JVM_XMX=256m
-e JVM_XMN=256m
–network host 将Linux宿主机的IP赋值给容器IP
–name nacos 设置容器名为 nacos
–restart=always 总是重启,加上这句话之后,若重新启动Docker,该容器也会重新启动
9.6 开启端口
# 查询8848端口防火墙是否开启,返回no表示没有开启
firewall-cmd --query-port=8848/tcp
# 防火墙开启8848端口
firewall-cmd --add-port=8848/tcp --permanent
# 重载防火墙开放端口
firewall-cmd --reload
注: Nacos2.x版本新增了gRPC的通信方式,因此需要新增占用两个端口(9848,9849),并且这两个端口必须开放,否则客户端就连接不上Nacos服务。
详情地址:https://nacos.io/zh-cn/docs/2.0.0-compatibility.html
9.7 访问nacos
默认用户名和密码都是nacos, 访问地址: ip:8848/nacos