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,并开启监控端口映射。

    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
    mcbilla
    mcbilla
    一个普通的干饭人🍚
    Announcement
    type
    status
    date
    slug
    summary
    tags
    category
    icon
    password
    🎉欢迎来到飙戈的博客🎉
    -- 感谢您的支持 ---
    👏欢迎学习交流👏