# 一、Docker

# 1.安装docker(Centos7.9)

# 1)网址

Docker Hub	https://hub-stage.docker.com/
官方文档	https://docs.docker.com/

# 2)删除旧版本docker

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

# 3)设置国内的镜像仓库

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum软件包索引
yum makecache fast

# 4)安装docker

yum install docker
#启动docker
service docker start

# 5)aliyun加速镜像下载

阿里云镜像加速网址:
https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

img

# 6)创建虚拟网段

docker network create -d bridge rollstones

# 2.docker容器互联

#创建一个新的 Docker 网络 -d:参数指定 Docker 网络类型,有 bridge、overlay
docker network create -d bridge rollstones
#查看网络
docker network ls
#运行一个容器并连接到新建的 rollstones 网络
docker run -itd --name test1 --network rollstones
#再运行一个容器并连接到新建的 rollstones 网络
docker run -itd --name test2 --network rollstones
#test1 容器和 test2 容器建立了互联关系,现在即可用容器名字互相访问

# 3.docker file


# 4.docker compose

# 1)介绍

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。

Compose有2个重要的概念:

  • 项目(Project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
  • 服务(Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

# 2)compose安装


# 5.docker 安装 Nginx

#下载镜像
docker pull nginx:latest
#启动容器
docker run --name nginx -p 8080:80 -d nginx

# 6.docker 安装 Tomcat

#下载镜像
docker pull tomcat

# 7.docker 安装 Mysql

docker run -p 3306:3306 --network mybridge --name mysql -e MYSQL_ROOT_PASSWORD=root -d  mysql:5.7

# 1)自定义配置安装

  • [推荐]带着配置参数创建应用容器

    # docker run --name some-mysql -d -t -p 3306:3306 -e 参数名称1=参数名称1的值 -e 参数名称2=参数名称2的值 mysql:版本号 --character-set-server=utf8mb4
    
    #docker run -it --rm mysql --verbose --help  可查看可配置的参数
    
    docker run --name some-secret-mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --default_storage_engine=InnoDB --lower_case_table_names=1 --max_allowed_packet=50M --character-set-server=utf8mb4 --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    
  • 将本地的配置文件映射到应用容器中

    docker run --name some-mysql-p 3306:3306-v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    

    在容器的宿主机中新建这样一个配置文件my.cnf(名字就用这个),然后将/my/custom替换成这个宿主机中的my.cnf配置文件所在的文件夹的绝对路径,这样mysql容器在创建的时候就会使用my.cnf中的所有配置来创建mysql,同样,这些在my.cnf中的配置,都可以使用-e 参数1=参数1的值的方式来配置

    注意: 如果使用了数据卷映射数据文件, 此时mysql的大部分配置包括密码都是跟着数据文件走的,docker创建的命令不再起作用

# 8.docker 安装 PostgresSql

docker run --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -d postgres

# 9.docker 安装 Mongodb

#下载镜像
docker pull mongo:latest
#启动容器
docker run -itd --name mongodb -p 27017:27017 mongo --auth
#进入容器内部
docker exec -it mongodb mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
db.createUser({user:'dong',pwd:'123456',roles:[{role:'root',db:'admin'},"root"]})
# 尝试使用上面创建的用户信息进行连接。
db.auth('admin', '123456')
角色功能
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

# 10.docker 安装 Redis

#下载镜像
docker pull redis:latest
#启动容器,并设置密码 开启持久化
docker run -itd --name redis -p 6379:6379 redis --requirepass 123456789 --appendonly yes

# 11.docker 安装 Elasticsearch

#下载镜像

#启动容器

# 12.docker 安装 RabbitMQ

docker search rabbitmq:management
#下载镜像
docker pull rabbitmq:management
#启动容器
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

#登录管理页面:IP:15672  admin	admin

# 13.docker 安装 Kafka

#下载镜像
docker pull docker.io/bitnami/kafka
#启动容器
docker run -d --name=kafka1 \
 -p 9092:9092 \
 --network app-bridge \
 -e ALLOW_PLAINTEXT_LISTENER=yes \
 -e KAFKA_CFG_ZOOKEEPER_CONNECT=81.70.199.213:2181 \
 -e KAFKA_BROKER_ID=2 \
 -e KAFKA_HEAP_OPTS="-Xmx180m -Xms180m" \
 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://81.70.199.213:9092 \
 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092  \
 bitnami/kafka
ALLOW_PLAINTEXT_LISTENER=yes:允许使用PLAINTEXT侦听器
KAFKA_CFG_ZOOKEEPER_CONNECT:zookeeper集群地址,多节点,分割
KAFKA_BROKER_ID:节点id,用来指定 Kafka 集群中 broker 的唯一标识,默认值为 -1。如果没有设置,那么 Kafka会自动生成一个
KAFKA_ADVERTISED_LISTENERS:绑定公网 IP 供外部客户端使用
KAFKA_LISTENERS:绑定私网 IP 地址供 broker 间通信使用

# 14.docker 安装 RocketMQ

#查询镜像仓库
docker search rocketMQ
#下载镜像
docker pull rocketMQ
#创建 RocketMQ 容器

#创建broker 容器

#安装RocketMQ-Console-ng(RocketMQ管理页面)

# 15.docker 安装 Nacos

#下载镜像
docker pull nacos/nacos-server
#启动容器
#使用自带数据库启动
docker run -d -p 8848:8848 --name nacos --env MODE=standalone nacos/nacos-server:latest

#使用非自带数据库启动
#挂载目录
mkdir -p /mydata/nacos/logs/                      #新建logs目录
mkdir -p /mydata/nacos/init.d/          
vim /mydata/nacos/init.d/custom.properties        #修改配置文件
#启动
docker  run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /mydata/nacos/logs:/home/nacos/logs \
-v /mydata/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
nacos/nacos-server

#打开浏览器进行登录 https:xx.xx.xx.xx:8848/nacos 账号:nacos 密码:nacos
#设置nacos自启动
docker update --restart=always  nacos

# 16.docker 安装 Sentinel

#下载镜像

#启

# 17.docker 安装 zookeeper

#下载镜像
docker pull zookeeper
#启
docker run --name zookeeper --network app-bridge -e ALLOW_ANONYMOUS_LOGIN=yes -d -it -p 2181:2181 zookeeper

# 18.docker 安装 dubbo-admin

docker run --name some-dubbo-admin -p 8080:8080 -d -it -e admin.registry.address=zookeeper://selton.cn:2181 -e admin.config-center=zookeeper://app-bridge:2181 -e admin.metadata-report.address=zookeeper://app-bridge:2181  apache/dubbo-admin 

# 19.docker 安装 fastDFS

docker pull delron/fastdfs

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

#注意: 需要暴露22122端口 23000 否则下面的创建会有问题 8888端口也需要暴露 将来通过这个端口访问图片
#selton.cn替换成你的公网host或者局域网host

docker run -d --network=host --name some-storage -e TRACKER_SERVER=selton.cn:22122 -v /var/fdfs/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

# 20.docker 安装 sonar

#注意: 保持服务器剩余内存足够,默认情况下,sonarqube大约占用1.5G内存
#打开http://yourhost:900/,点击"Log in"
#登录账号:admin 密码:admin
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube
Last Updated: 12/15/2023, 8:18:50 AM