type
status
date
slug
summary
tags
category
password
简介
使用原则
- 要明确版本,不能用latest,方便后期管理
- 尽量把目录挂在出来,下面的操作有都有一个预启动的过程,把目录挂载出来后,再把预启动的容器删掉,再使用挂载目录的启动命令。
- 尽量不要使用默认的网络,而是使用本地网桥进行通讯
安装步骤
以安装 nginx 为例
- 拉取镜像。
- 临时启动一个实例,只是为了复制出配置。
- 将容器内的配置文件拷贝到指定目录。使用格式是
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
注意:
SRC_PATH
不以/.
结尾,源目录(包括源目录本身)整个拷贝到目标目录
SRC_PATH
以/.
结尾,只把源目录下的内容(不包括源目录本身)整个拷贝到目标目录
docker cp
命令的使用规则参考 docker cp- 停止临时容器。
- 删除临时容器
- 使用带挂载目录的参数启动容器。
- 下次手动启动
- 打开/关闭开机自启动
- 进入容器
本地网桥
本地网桥用于本地容器间可以通过127.0.0.1的地址进行通信。
1、创建网桥
2、查看网桥
这里可以看到 local-bridge 网桥已经被创建好
3、查看网桥的具体信息
查看启动命令
查看容器启动的 docker run 命令需要借助第三方工具,这里推荐使用
runlike
。安装步骤
用法如下。
-p
可以将命令行分解为漂亮的行。例如
解决找不到文件的错误
Docker 容器启动,有时候会报找不到文件的错误
解决办法:在
docker run
命令后加一个 --privileged
参数。该参数可以让容器内的 root 用户具备拥有真正的 root 权限。未加参数时,容器启动用户未获取到 root 权限,无法读取 root 用户创建的文件,加上 --privileged
后就拥有了对应文件的读写权限。Mysql
拉取镜像
临时启动
挂载目录
启动
Mysql 默认是没有配置文件的,在
/mydata/mysql8/conf
下新建 my.cnf 文件输入以下内容
然后重启 Mysql ,配置文件才会生效
Redis
拉取镜像
挂载目录
redis 默认是没有配置文件的,需要手动创建
redis.conf
文件。如果没有创建,执行启动命令的时候 Docker 会将 redis.conf
作为目录创建。然后修改
redis.conf
,有几个关键配置项需要修改。启动
使用以下命令进入容器内部并使用Redis命令行客户端测试
Zookeeper
拉取镜像
临时启动
挂载目录
启动
Kafka
注意启动 kafka 之前必须先启动 zookeeper
拉取镜像
注意:
- 2.7.2 之前的版本需要 zookeeper,之后的版本去 zk 化,有大量的兼容性逻辑,所以如果还需要 zookeeper 的话,2.7.2 是最后一个稳定版本。
- 如果是 ARM 平台(苹果 M 系列芯片),使用以下命令
docker pull wurstmeister/kafka:2.13-2.7.2 --platform linux/arm64
。
临时启动
挂载目录
注意这一步还没有外挂数据目录,因为数据目录是在
server.properties
配置文件里面设置的。修改 server.properties
配置文件。设置
log.dirs
创建数据目录
删除元数据
在删除 Kafka 临时容器之后,同时需要删除 Zookeeper 中的元数据。常见元数据如下所示:
节点路径 | 描述 | 删除必要性 |
/brokers | 存储KafkaBroker信息、主题和分区详情 | 必须删除 |
/config | 存储主题和客户端的配置信息 | 建议删除 |
/admin | 存储删除主题的请求记录 (如 delete_topics ) | 建议删除 |
/consumers | 存储旧版本消费者(Zookeeper Consumer)的位移等信息 | 若使用旧消费者则需检查 |
/cluster | 存储集群ID等信息 | 可选删除 |
/controller | 记录当前控制器的Broker ID | 必须删除 |
/controller_epoch | 记录控制器选举的次数 | 必须删除 |
连接到 Zookeeper 节点,执行以下命令
启动
常用环境变量如下:
KAFKA_BROKER_ID
: A unique ID for the instance. default1
KAFKA_PORT
: The port the Kafka broker listener will listen on. default9092
KAFKA_PROTOCOL
: The protocol used for the listeners. defaultPLAINTEXT
KAFKA_LISTENERS
: The hostname and port the Kafka broker will listen on. default${KAFKA_PROTOCOL}://0.0.0.0:${KAFKA_PORT}
KAFKA_ADVERTISED_LISTENERS
: The hostname and port the Kafka broker will advertise to producers and consumers. default${KAFKA_PROTOCOL}://localhost:${KAFKA_PORT}
ZOOKEEPER_HOSTS
: A comma separated string of ZooKeeper hosts that Kafka will use for cluster orchestration.
实测发现这个版本的 kafka 启动参数如果不加上-e KAFKA_LOG_DIRS=/kafka/data
,在 kafka 启动之后,server.properties
里面的log.dirs
属性会重置为一个默认值,类似于log.dirs=/kafka/kafka-logs-100d69ff42ae
。
要安装kafka集群的话就需要考虑网络问题了,可以使用以下命令
重点关注
KAFKA_LISTENERS
和 KAFKA_ADVERTISED_LISTENERS
这两个变量,简单来说KAFKA_LISTENERS
指明 Kafka 当前节点监听本机的哪个网卡,0.0.0.0
表示本地所有 ip4 地址,相当于本机地址,注意不要使用127.0.0.1
或者localhost
KAFKA_ADVERTISED_LISTENERS
指明客户端通过哪个 ip 可以访问到当前节点,一般使用宿主机 ip。
如果需要开启 JMX 监控,例如搭配 Eagle 等监控工具使用,需要设置变量
JMX_PORT
和 KAFKA_JVM_PERFORMANCE_OPTS
,并开启监控端口映射。如果想使用 Kafka 内置的命令工具,执行以下命令
Rocketmq
拉取镜像
注意:
- 如果是 ARM 平台(苹果 M 系列芯片),使用以下命令
docker pull apache/rocketmq:5.3.1 --platform linux/arm64
docker pull candice0630/rocketmq-console-ng:2.0
临时启动
启动 nameserver
启动 broker
挂载目录
主目录是
/home/rocketmq/rocketmq-4.9.4/
启动
启动 nameserver
启动 broker
启动 console(可选)
访问地址 http://locahost:8080。
注意:
- Broker 的创建参数
-e
参数如果使用 NameServer 的容器名称rocketmq-namesrv
,Broker 在启动时会向 NameServer 注册自己的地址。在 Docker 中,如果未明确配置,Broker 默认会使用容器的内部 IP(如172.17.0.x
)进行注册。外部服务(包括宿主机上的其他服务) 从 NameServer 获取到这个内部IP后,无法直接连接。
- 解决方案是
-e
参数使用本地的 IP(例如192.168.50.105:9876
)。另外还要修改broker.conf
,增加 namesrvAddr
:指向你的 NameServer。如果 Broker 容器和 NameServer 容器通过Docker网络(如自定义桥接网络)通信,这里可以写 NameServer 的容器名和端口(例如rmqnamesrv:9876
)。如果从外部连接,则需要写宿主机的 IP。brokerIP1
:必须设置为宿主机在局域网内的IP地址(如192.168.1.100
),或者公网IP(如果你希望公网访问)。切勿使用127.0.0.1
或localhost
。
Nginx
拉取镜像
临时启动
挂载目录
启动
Apache
拉取镜像
挂载目录
启动
Elasticsearch
拉取镜像
临时启动
挂载目录
v8 之后默认开启 x-pack 的安全功能,访问地址 http://localhost:9200 会报错,需要手动关闭。修改
/data/elasticsearch/config/elasticsearch.yml
启动
如果以集群模式启动,不要加-e "discovery.type=single-node" \
访问地址 http://localhost:9200,返回以下内容表示安装成功
Kibana
拉取镜像
临时启动
挂载目录
启动
注意如果没有关闭 es 的安全性校验,在第一次登录的时候会提示输入 enrollment token。
enrollment token 在第一个 Elasticsearch 启动后的有效时间为30分钟。超过30分钟的时间上述 token 将会无效。enrollment token 分两个,一个是 Kibana 连接 Elasticsearch 使用的,另一个是 Elasticsearch 加入集群使用的
Nacos
拉取镜像
- 如果是 ARM 平台(苹果 M 系列芯片),使用以下命令
docker pull nacos/nacos-server:v2.4.3 --platform linux/arm64
临时启动
挂载目录
启动
访问地址为 http://127.0.0.1:8848/nacos。默认登陆账号密码均为 nacos。
持久化
上面模式在 docker 容器停止后,nacos 配置的数据会丢失。下面将数据保存到 mysql 数据库中。注意只保存配置中心的数据,不保存注册中心的数据。
- 创建一个
nacos_config
数据库
- 在 Nacos 的
conf
目录下找到mysql-schema.sql
(针对Nacos 2.x版本),然后执行该 sql 脚本。
然后执行命令
Seata
拉取镜像
临时启动
挂载目录
启动
Skywalking
skywalking 的安装分为两部分:
- SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
- SkyWalking UI :负责提供控台,查看链路等等。
这里涉及到三个端口
- 11800 端口:gPRC 默认监听的服务端口
- 12800 端口:HTTP 默认监听的端口
- 8080 端口:SkyWalking UI 应用默认监听的端口
安装 SkyWalking OAP
SkyWalking OAP 默认使用 H2 内存数据库存储,这里使用 elasticsearch 作为数据存储。
安装 SkyWalking UI
然后访问 http://127.0.0.1:8080 访问 skywalking 控制台。
客户端要接入 skywalking 监控,还需要另外下载 agent 包,解压到目录之后,使用以下命令启动客户端。java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
Mongodb
拉取镜像
挂载目录
创建目录
创建 mongod.conf 配置文件
mongod.conf 配置文件内容
创建 mongod.log 文件
启动
客户端连接
客户端连接可以选择:
- MongoDB Shell:命令行工具,MongoDB Server 内部已经内置,也可以单独下载
- MongoDB Compass:GUI 界面
以 MongoDB Shell 为例,可以使用
mongo
命令来连接数据库,有下面两种写法,效果一致推荐第二种写法,mongo 的 bin 目录下还有mongostat
、mongotop
等监控命令,用法和 mongo 命令一致
如果想使用 Docker 容器里面的 MongoDB Shell,执行以下命令
mongodb url 标准语法
选项 | 说明 |
mongodb:// | 这是固定的格式,必须要指定 |
username:password@ | 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库 |
host | 必须的指定至少一个host,它指定了要连接服务器的地址如果要连接集群,请指定多个主机地址 |
port | 可选的指定端口,如果不填,默认为27017 |
/database | 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库 |
?options | 是连接选项。如果不使用/database,则前面需要加上/所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开 |
使用用户名 yufei,密码 123abc32q 登录 localhost 的 twle 数据库
连接到本地集群,三台服务器端口为 27017, 27018, 27019
Etcd
拉取镜像
启动
- Author:mcbilla
- URL:http://mcbilla.com/article/f7c9a4b6-c9e0-42fe-af18-f3c78309d0e8
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts