# 一、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
# 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