type
status
date
slug
summary
tags
category
icon
password

简介

使用原则

  1. 要明确版本,不能用latest,方便后期管理
  1. 尽量把目录挂在出来,下面的操作有都有一个预启动的过程,把目录挂载出来后,再把预启动的容器删掉,再使用挂载目录的启动命令。
  1. 尽量不要使用默认的网络,而是使用本地网桥进行通讯

安装步骤

以安装 nginx 为例
  1. 拉取镜像。
  1. 临时启动一个实例,只是为了复制出配置。
  1. 将容器内的配置文件拷贝到指定目录。使用格式是 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
💡
注意:
  • SRC_PATH 不以 /. 结尾,源目录(包括源目录本身)整个拷贝到目标目录
  • SRC_PATH/. 结尾,只把源目录下的内容(不包括源目录本身)整个拷贝到目标目录
docker cp 命令的使用规则参考 docker cp
  1. 停止临时容器。
  1. 删除临时容器
  1. 使用带挂载目录的参数启动容器。
  1. 下次手动启动
  1. 打开/关闭开机自启动
  1. 进入容器

本地网桥

本地网桥用于本地容器间可以通过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. default 1
  • KAFKA_PORT: The port the Kafka broker listener will listen on. default 9092
  • KAFKA_PROTOCOL: The protocol used for the listeners. default PLAINTEXT
  • 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_LISTENERSKAFKA_ADVERTISED_LISTENERS 这两个变量,简单来说
  • KAFKA_LISTENERS 指明 Kafka 当前节点监听本机的哪个网卡,0.0.0.0 表示本地所有 ip4 地址,相当于本机地址,注意不要使用 127.0.0.1 或者 localhost
  • KAFKA_ADVERTISED_LISTENERS 指明客户端通过哪个 ip 可以访问到当前节点,一般使用宿主机 ip。
如果需要开启 JMX 监控,例如搭配 Eagle 等监控工具使用,需要设置变量 JMX_PORTKAFKA_JVM_PERFORMANCE_OPTS,并开启监控端口映射。
如果想使用 Kafka 内置的命令工具,执行以下命令

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

拉取镜像

临时启动

挂载目录

启动

访问地址:http://localhost:5601
注意如果没有关闭 es 的安全性校验,在第一次登录的时候会提示输入 enrollment token。
enrollment token 在第一个 Elasticsearch 启动后的有效时间为30分钟。超过30分钟的时间上述 token 将会无效。enrollment token分两个,一个是kibana连接es使用的,另一个是es加入集群使用的

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 目录下还有 mongostatmongotop 等监控命令,用法和 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
计算机网络系列(一):基础篇Docker系列:Docker Compose
Loading...