type
status
date
slug
summary
tags
category
icon
password
简介
使用原则
- 要明确版本,不能用latest,方便后期管理
- 尽量把目录挂在出来,下面的操作有都有一个预启动的过程,把目录挂载出来后,再把预启动的容器删掉,再使用挂载目录的启动命令。
- 尽量不要使用默认的网络,而是使用本地网桥进行通讯
安装步骤
以安装 nginx 为例
- 拉取镜像。
- 临时启动一个实例,只是为了复制出配置。
- 将容器内的配置文件拷贝到指定目录。使用格式是
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
注意:
SRC_PATH
不以/.
结尾,源目录(包括源目录本身)整个拷贝到目标目录
SRC_PATH
以/.
结尾,只把源目录下的内容(不包括源目录本身)整个拷贝到目标目录
docker cp
命令的使用规则参考 docker cp- 停止临时容器。
- 删除临时容器
- 使用带挂载目录的参数启动容器。
- 下次手动启动
- 设置开机自启动
- 进入容器
本地网桥
本地网桥用于本地容器间可以通过127.0.0.1的地址进行通信。
创建网桥
查看网桥
local-bridge的地址为172.19.0.2
查看启动命令
查看容器启动的 docker run 命令需要借助第三方工具,这里推荐使用
runlike
。安装步骤
用法如下。
-p
可以将命令行分解为漂亮的行。例如
解决找不到文件的错误
Docker 容器启动,有时候会报找不到文件的错误
解决办法:在
docker run
命令后加一个 --privileged
参数。该参数可以让容器内的 root 用户具备拥有真正的 root 权限。未加参数时,容器启动用户未获取到 root 权限,无法读取 root 用户创建的文件,加上 --privileged
后就拥有了对应文件的读写权限。Mysql
拉取镜像
临时启动
挂载目录
启动
自定义配置文件
Mysql 默认是没有配置文件的,在
/mydata/mysql8/conf
下新建 my.cnf 文件输入以下内容
然后重启 Mysql ,配置文件才会生效
Zookeeper
拉取镜像
临时启动
挂载目录
启动
Redis
拉取镜像
启动
redis默认是没有配置的,需要手动加配置,外面挂载data目录和配置文件
然后修改redis.conf
Kafka
注意启动 kafka 之前必须先启动 zookeeper
拉取镜像
2.7.2 之前的版本需要 zookeeper,之后的版本去 zk 化,有大量的兼容性逻辑,所以如果还需要 zookeeper 的话,2.7.2 是最后一个稳定版本。
临时启动
挂载目录
注意这一步还没有外挂数据目录,因为数据目录是在
server.properties
配置文件里面设置的。修改 server.properties
配置文件。设置
log.dirs
创建数据目录
启动
常用环境变量如下:
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
,并开启监控端口映射。Rocketmq
拉取镜像
启动
主目录是
/home/rocketmq/rocketmq-4.9.4/
。挂载目录启动nameserver
启动broker
启动console
访问地址 http://locahost:8080,注意broker和console的-e参数要么使用nameserver的容器昵称`rmqnamesrv`,要么使用本地的ip
192.168.50.105
。如果使用本地IP,另外还要修改 broker.conf
,增加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连接es使用的,另一个是es加入集群使用的
Nacos
拉取镜像
临时启动
挂载目录
启动
访问地址为 http://127.0.0.1:8848/nacos。默认登陆账号密码均为 nacos。
持久化
此模式在docker容器停止后,在nacos配置的数据会丢失。下面将数据保存到mysql数据库中。注意只保存配置中心的数据,不保存注册中心的数据。
首先创建一个
nacos_config
数据库,然后执行脚本 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
- 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