安装 OrbStack

OrbStack is a fast, light, and simple way to run Docker containers and Linux machines on macOS. You can think of it as a supercharged WSL and Docker Desktop replacement, all in one easy-to-use app.

安装MySQL

拉取镜像

docker pull mysql    //拉取镜像
docker images    //查看本地镜像

创建数据卷

将其配置和数据等等挂载到数据卷以持久化到宿主机。
创建三个数据卷,分别用于挂载并持久化MySQL的 数据文件、配置文件 和 日志文件 :

docker volume create mysql-data
docker volume create mysql-config
docker volume create mysql-log

创建并运行容器

docker run -id --name=mysql -v mysql-config:/etc/mysql/conf.d \
-v mysql-log:/logs \
-v mysql-data:/var/lib/mysql \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD=xxx \
-e LANG=C.UTF-8 mysql
  • -id 将MySQL容器挂在后台运行
  • --name=mysql 将容器起名为 mysql
  • -v mysql-config:/etc/mysql/conf.d 把MySQL容器中的配置文件目录挂载至上述创建的名为mysql-config的数据卷上面,其他两个 -v 挂载数据卷的参数同理
  • -p 3306:3306 将主机的 3306 端口映射到容器的 3306
  • -e MYSQL_ROOT_PASSWORD=xxx 设置 root 用户的密码
  • -e LANG=C.UTF-8 设置容器的语言环境变量 LANG 值为 C.UTF-8

通过容器访问MySQL

docker exec -it mysql bash
mysql -uroot -p

在容器外访问:

mysql -u root -pxxx -hmysql.orb.local

安装redis

拉取镜像

docker pull redis

创建数据卷

docker volume create redis-config
docker volume create redis-data

修改配置文件

cd ~/OrbStack/docker/volumes/redis-config
vim redis.conf

# 启动redis持久化功能
appendonly yes
# 设置密码
requirepass xxx
# 指定数据存储位置
dir /data

创建容器

docker run -id --name=redis \
    -v redis-config:/usr/local/etc/redis \
    -v redis-data:/data -p 6379:6379 \
    -e LANG=C.UTF-8 redis \ 
    redis-server /usr/local/etc/redis/redis.conf
    # su -l root -c "redis-server /usr/local/etc/redis/redis.conf"
  • --name redis 指定容器名字
  • -v 指定数据卷,可见将容器配置文件夹/usr/local/etc/redis挂载至了数据卷redis-config,将容器 内/data挂载至数据卷redis-data,可见这里挂载数据卷的容器内路径和我们上述预先写的配置文件中对应的路径是要一致的
  • -p 6379:6379 端口映射
  • -e 用于指定容器内环境变量,设置容器的语言环境变量LANG值为C.UTF-8,这个最好是要设置,否则容器内默认是英文环境,使得Redis可能无法存放中文内容
  • su -l root -c "redis-server /usr/local/etc/redis/redis.conf" 在容器内以root身份运行redis-server并指定了配置文件位置

通过容器执行redis命令

  • 运行redis docker start redis
  • 查看redis运行状态 docker ps | grep redis
  • 进入redis容器内部 docker exec -it redis bash
  • 进入Redis控制台 redis-cli

MongoDB

安装

docker pull mongo
docker run --name mongo -v mongo-data:/data/db -v mongo-config:/data/configdb --privileged -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 -d mongo --auth
  • -name 指定容器名称
  • -v 指定数据存储位置
  • --privileged root权限
  • -p 端口映射
  • -d 后台运行
  • -auth 需要认证,默认mongo是不需要认证的
  • -e MONGO_INITDB_ROOT_USERNAME=admin 指定用户名
  • -e MONGO_INITDB_ROOT_PASSWORD=123456 指定密码

添加用户

进入容器 docker exec -it mongo mongosh admin
添加用户 db.createUser({user:'admin',pwd:'123456',roles[{role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]})

kafka

安装kafka

最新Kafka 使用内置的 Raft 组件来管理主题和分区,因此我们不用额外安装ZooKeeper,可以直接安装 Kafka

  • 拉取镜像 docker pull bitnami/kafka:latest
  • 创建网络 docker network create kafka-net
  • 启动Kafka服务实例
docker run -d --name kafka \
    --network kafka-net \
    -p 9092:9092 \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    bitnami/kafka:latest

测试Kafka生产者和消费者

docker exec -it kafka /bin/b
cd opt/bitnami/kafka/bin/

开启两个终端

  • 运行生产者发送消息 ./kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
  • 运行消费者接受消息 ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning