CentOS安装Docker,及Docker部署常见容器

CentOS安装Docker,及Docker部署常见容器

服务器版本为 CentOS7.9,使用lsb_release -a命令查看版本

lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.9.2009 (Core)
Release:        7.9.2009
Codename:       Core

安装Docker

Docker官网链接:https://www.docker.com/
Docker官方安装文档:https://docs.docker.com/install/linux/docker-ce/centos/

1、卸载系统之前可能安装的 docker(防止冲突)
sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine
2、安装 Docker基本环境
# 安装必须的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置 docker repo 的 yum 位置
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
# 安装 docker,docker-cli
sudo yum install docker-ce docker-ce-cli containerd.io
# 安装完成测试;安装版本为当前最新版 24.0.7
sudo docker version
3、启动 Docker
# 启动 docker
sudo systemctl start docker
# 查看 docker 服务状态 running 就是启动成功
sudo systemctl status docker
# 设置 docker 开机自启
sudo systemctl enable docker	
4、配置 Docker 镜像加速
  • 配置 docker阿里云容器镜像加速,可以使docker使用起来更流畅
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]} EOF
sudo systemctl daemon-reload
sudo systemctl restart docke

基于 Docker 部署容器的前置准备

在此之前,安全组及防火墙要开放端口,这样确保容器启动之后外面才能访问

防火墙开放端口命令(需确保防火墙在运行)
# 启动防火墙
systemctl start firewalld
# 永久打开端口
firewall-cmd --permanent --add-port=[端口]/tcp
# 刷新防火墙
firewall-cmd --reload
# 查看防火墙,添加的端口也可以看到
firewall-cmd --list-all
建议开放端口

3306 mysql
6379 redis
8848 nacos
9876 rocketmq
5672、15672 rabbitmq
9000、9090 minio
9200、9300、5601 es+Kibana
8858 sentinel
8901 seate

准备卷挂载目录即可开始部署容器

基于 Docker 部署 Mysql

# 1、拉取镜像,拉取mysql5.7版本
docker pull mysql:5.7
# 2、创建容器
docker run -p 3306:3306 --name mysql5.7 \
-v [卷挂载目录]/conf:/etc/mysql/conf.d \
-v [卷挂载目录]/log:/var/log/ \
-v [卷挂载目录]/data:/var/lib/mysql \
--restart=always \
-e MYSQL_ROOT_PASSWORD=[密码] \
-d mysql:5.7

# 3、远程连接,修改权限
### 进入容器
docker exec -it 容器名称/容器id bin/bash
### 登录mysql
mysql -uroot -p[数据库登录密码] 
### 修改权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '[登录密码]' WITH GRANT OPTION;
### 如安装mysql8.0远程连接不上解决方法,因为8之后密码加密和之前版本不同
alter user 'root'@'%' identified with mysql_native_password by '[登录密码]';
### 刷新权限
flush privileges;

基于 Docker 部署 Redis

先下载redis配置文件, 下载地址: http://download.redis.io/redis-stable/redis.conf

# 1、拉取镜像
docker pull redis
# 2、将下载好的配置文件上传至服务器,并移动至卷挂载目录
cp [原位置] [目标位置:卷挂载目录] 
# 3、创建容器
docker run -p 6379:6379 --name redis \
--log-opt max-size=100m \
--log-opt max-file=2 \
-v [卷挂载目录]/redis.conf:/etc/redis/redis.conf \
-v [卷挂载目录]/data:/data \
-d redis \
redis-server /etc/redis/redis.conf \
--bind 0.0.0.0 \
--protected-mode yes \
--requirepass [密码]

基于 Docker 部署 Nacos

# 1、拉取镜像
docker pull nacos/nacos-server
# 2、创建容器
docker run -d \
--name nacos \															 
-p 8848:8848 \
--privileged=true \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v [卷挂载目录]/logs:/home/nacos/logs \
-v [卷挂载目录]/conf:/home/nacos/conf/ \
--restart=always \
nacos/nacos-server
nacos配置持久化,这里使用mysql
  • 导入数据库nacos_config,sql文件地址:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql

  • 修改 application.properties 配置文件

# 进入卷挂载的目录
cd [卷挂载目录]/conf
# 进入配置文件
vim application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://[数据库IP地址]:3306/[nacos-config]?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=[数据库密码]
nacos开启鉴权

注意,Nacos自2.2.2版本开始,在未开启鉴权时,默认控制台将不需要登录即可访问

  • 修改 application.properties 配置文件
### 开启鉴权
nacos.core.auth.enabled=true

### 注意,这是2.1.0版本之前
nacos.core.auth.default.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=
### 2.1.0 版本后
nacos.core.auth.plugin.nacos.token.secret.key=VGhpc0lzTXlDdXN0b21TZWNyZXRLZXkwMTIzNDU2Nzg=

### 配置自定义身份识别的key(不可为空)和value(不可为空)
nacos.core.auth.server.identity.key=example
nacos.core.auth.server.identity.value=example
  • 或者在部署容器的时候加该命令,更推荐上一种
--env NACOS_AUTH_ENABLE=true
访问nacos

访问路径:[ip]:8848/nacos

基于 Docker 部署 Sentinel

# 1、拉取镜像
docker pull bladex/sentinel-dashboard
# 2、创建容器
docker run --name sentinel -p 8719:8719 -p 8858:8858 -td bladex/sentinel-dashboard
访问 Sentinel 控制台

访问路径:[ip]:8858

基于 Docker 部署 RabbitMQ

推荐选择带有 management 的版本(包含web管理页面)

# 1、拉取镜像
docker pull rabbitmq:mangement
# 2、创建容器
docker run -d --name rabbitmq \ 
-p 5672:5672 -p 15672:15672 \
-v [卷挂载目录]/data:/var/lib/rabbitmq \
--hostname rabbit \
-e RABBITMQ_DEFAULT_VHOST=/ \
-e RABBITMQ_DEFAULT_USER=[登录名] \
-e RABBITMQ_DEFAULT_PASS=[密码] \
rabbitmq:management
访问 RabbitMQ 控制台

访问路径:[ip]:15672

安装延迟队列插件

插件下载地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases

  • 将插件下载好后,上传至服务器
  • 将插件拷贝至容器中
docker cp [插件路径]  [容器ID/容器名]:/plugins
  • 进入容器
docker exec -it [容器ID/容器名] /bin/bash 
  • 启动插件并重启容器
# 启动插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
# 退出容器
exit
# 重启容器
docker restart [容器ID/容器名]

基于 Docker 部署 Elasticsearch + Kibana

安装 Elasticsearch
# 1、创建网络,因为要部署kibana容器,因此需要让es和kibana容器互联
docker network create es-net
# 2、拉取镜像,这里以7.8.0版本为例
docker pull elasticsearch:7.8.0
# 3、可选:修改卷挂载目录的权限,如果es需要卷挂载,这一步是有必要执行的
chmod 777 [卷挂载目录]/**
# 4、创建容器
docker run -d --name elasticsearch:7.8.0 \
-p 9200:9200 -p 9300:9300 \
--network es-net \
-v [卷挂载目录]/data:/usr/share/elasticsearch/data \
-v [卷挂载目录]/plugins:/usr/share/elasticsearch/plugins \
-v [卷挂载目录]/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \
-e "discovery.type=single-node" \
elasticsearch:7.8.0
安装Kibana
# 1、拉取镜像,这里以es版本一致 7.8.0
docker pull kibana:7.8.0
# 2、创建临时容器
docker run -d \
--name kibana \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://[es地址]:9200 \
kibana:7.8.0
# 3、将容器配置拷贝至宿主机
docker cp kibana:/usr/share/kibana/config/kibana.yml [目标位置]
# 4、修改 kibana.yml 里的配置,中文显示
vi [卷挂载目录]/kibana.yml
### 修改如下:
i18n.locale: zh-CN # 设置kibana中文显示
# 5、删除临时容器
docker rm -f kibana
# 6、启动kibana,注意网络配置
docker run -d \
--name kibana \
--network es-net \
-p 5601:5601 \
-v [卷挂载目录]/kibana.yml:/usr/share/kibana/config/kibana.yml \
-e ELASTICSEARCH_HOSTS=http://[es地址]:9200 \
kibana:7.8.0
在线安装插件 ik分词器
# 1、进入容器
docker exec -it [容器ID/容器名] /bin/bash
# 2、在线安装,如果需要安装其他版本的ik分词器版本号修改即可
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.6.0/elasticsearch-analysis-ik-8.6.0.zip
访问路径

es路径:[ip]:9200
kibana路径:[ip]:5601

基于 Docker 部署 Seata

准备 Seata 的数据库表

sql文件地址:https://github.com/seata/seata/tree/1.7.1/script/server/db

准备 Seata 的配置文件
# 1、拉取镜像
docker pull seataio/seata-server
# 2、创建临时容器
docker run -d -p 8091:8091 --name seata-server seataio/seata-server
# 3、拷贝临时容器的配置至宿主机
docker cp seata-server:/seata-server/resources/. [目标位置]/seata
# 4、删除临时容器
docker rm -f seata-server
自定义 Seata 配置
# [目标位置]/seata/application.yml
seata:
  # 配置中心-nacos
  config:
    type: nacos  # support: nacos, consul, apollo, zk, etcd3
    nacos:
      server-addr: [nacos地址]:8848
      namespace:
      group: SEATA_GROUP
      username: nacos
      password: nacos
      context-path:
      data-id: seataServer.properties
  # 注册中心-nacos
  registry:
    type: nacos  # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    nacos:
      application: seata-server
      server-addr: [nacos地址]:8848
      group: SEATA_GROUP
      namespace:
      cluster: default    # TC 集群名称,下文 Seata 客户端中配置事务分组名和集群名映射使用
      username: nacos
      password: nacos
Seata 在 Nacos 的配置

Seata 使用 Nacos 作为配置中心,所以需要将 Seata 配置中心的配置 config.txt 文件导入 Nacos
配置文件地址:https://github.com/apache/incubator-seata/blob/1.7.1/script/config-center/config.txt

  • 在nacos配置中心创建一个 seataServer.properties 的配置,将 config.txt 导入
  • 以MySQL 作为 Seata 的存储方案,所以需要修改 seataServer.properties 配置文件中的存储模式和数据库连接配置,修改如下:
# seataServer.properties

# 配置存储模式为: db(数据库)
store.mode=db
store.lock.mode=db
store.session.mode=db
# 数据库连接配置
store.db.url=jdbc:mysql://[数据库连接地址]:3306/seata?useUnicode=true&rewriteBatchedStatements=true
store.db.user=[用户]
store.db.password=[密码]
启动 Seata
docker run -d \
--name seata-server \
-p 8091:8091 \
-e SEATA_IP=[IP地址] \
-v [卷挂载目录]/seata:/seata-server/resources \
seataio/seata-server

基于 Docker 部署 Minio

# 1、拉取镜像
docker pull minio/minio
# 2、创建容器
docker run -p 9000:9000 -p 9090:9090 \
--net=host \
--name minio \
-d --restart=always \
-e MINIO_ACCESS_KEY=minio \
-e MINIO_SECRET_KEY=[密码:最低8位] \
-v [卷挂载目录]/minio/data:/data \
-v [卷挂载目录]/minio/config:/root/.minio \
minio/minio server \
/data --console-address ":9090" -address ":9000"
访问 Minio 控制台

访问路径:[ip]:9090

待完善

基于 Docker 部署 RocketMQ

基于 Docker 部署 Kafka

基于 Docker 部署 Jenkins

以上为个人学习所用;如有问题和建议,欢迎评论区留言指正 !

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值