Docker笔记:Docker中简单配置Mysql/Redis/Mongodb容器

Docker 配置 Mysql 容器

1 )方案1:基于centos等linux操作系统

  • 启动centos镜像,在里面安装 mysql
  • 这样比较麻烦,配置的东西很多 ...

2 )方案2:直接用 mysql 镜像 (推荐)

  • $ docker pull mysql 下载镜像
  • $ docker run -itd --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pass-xxx-xx mysql
  • $ docker ps 找到容器id
  • $ docker exec -it 容器id /bin/bash 这样来连接上mysql, 这里容器id
    • $ mysql -u root -p
  • 之后使用客户端来连接上容器的mysql服务
    • 使用 服务器物理机 ip和端口
    • 测试,连接成功
  • 实现mysql的数据存放到本地
    • 配置文件 存放到物理机 /root/mysql/conf.d
    • 数据文件 存放到物理机 /root/mysql/data
  • 停止之前的容器,重新配置启动:
    • `docker run -itd --name my_mysql2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/mysql/conf.d:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql mysql `
  • 可以测试物理机和容器内的数据同步情况,测试正常

Docker 配置 Redis 容器

  • $ docker pull redis 下载redis镜像
  • $ docker run -itd --name redis-test -p 6379:6379 redis 启动redis容器
  • $ docker ps 查看当前redis
  • $ docker exec -it 容器id /bin/bash
    • $ redis-cli 可以连接上 redis
  • ip addr 拿到到物理机的ip之后,在客户端连接redis
    • $ redis-cli -h xxx.xxx.xxx.xxx -p 6379
    • 连接成功
  • 安全问题,需要授权
    • 启动时需配置密码
  • $ docker run -itd --name redis2 6378:6379 redis --requirepass "123456"
    • 连接 $ redis-cli
    • 直接set测试 $ set u wang, 提示 NOAUTH Authentication required.
      • $ auth 123456
    • 这样就可以set了
  • 客户端能正常连接了

Docker 配置 Mongodb 容器

  • $ docker pull mongo

  • $ docker run -itd --name mymongo -p 27017:27017 -v /root/mongo/data:/data/db mongo

  • $ docker ps 获取 mymongo 容器id

  • $ docker exec -it mymongo /bin/bash

    • $ mongo 链接 mongo 数据库
    • $ show dbs 查看现有数据库
    • $ use myowndb 创建自己的数据库
    • $ db.user.insert({username:'wang'}) 这样,在 myowndb 数据库中创建了user表,并插入了一条数据
    • $ show collections 看到目前的 user 集合(表)
    • $ show dbs 可看到多了 myowndb 的数据库
    • $ db.user.find({}) 查看 user 表中所有数据
  • 在物理机上 $ ip addr 获取ip地址

  • 在客户端上 连接 $ mongo xxx.xxx.xxx.xx:27017

    • $ show dbs
    • $ show collections
    • 正常连接
  • 测试数据持久化

    • $ docker inspect 容器id | grep mongo 查看对应映射关系
    • 销毁之前容器,创建新容器
    • 测试正常,数据都在
  • mongo密码问题

    docker 复制代码
    docker run -d --name authMongo \
        -e MONGO_INITDB_ROOT_USERNAME=admin \
        -e MONGO_INITDB_ROOT_PASSWORD=123456 \
        -p 27017:27017
        -v /root/mongo/data:/data/db \
        mongo --auth
  • 两个变量MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD结合起来使用来传递环境变量,配置账户密码

  • 创建账户,进行授权

    shell 复制代码
    db.createUser({
      user: 'wang',
      pwd: '123456',
      roles: [
        {
          role: 'userAdminAnyDatabase',
          db: 'admin'
        },
        "readWriteAnyDatabase"
      ],
    })
  • 创建一个新用户并设置该用户的密码

  • 该用户是在 admin 身份验证数据库中创建的,并被赋予角色, 这是一个"超级用户"角色

  • $ docker exec -it authMongo /bin/bash

    • `mongo `
    • `show dbs ` 发现看不到数据了
    • `db.auth('wang', '123456') ` 发现没法授权
  • 开始正确鉴权连接

    • $ mongo admin 连接admin数据库
    • $ db.auth('wang', '123456')
    • $ show dbs 这样就能看到了,说明鉴权成功了
  • 在客户端连接docker容器的mongo服务

    • `mongo xxx.xxx.xxx.xxx:27017/admin `
      • admin 是数据库,可以指定任意数据库
    • $ db.auth('wang', '123456') 这里是账户和密码
    • $ show dbs 发现有数据,正常连接
相关推荐
HaiQinyanAN1 小时前
【学习笔记】虚函数+虚析构函数
c++·笔记·学习
Cha0DD1 小时前
向量数据库Milvus在windows环境下的安装
docker·容器·milvus·向量数据库
棠十一2 小时前
docker 启动elasticsearch 与 kibana
elasticsearch·docker·容器
❀͜͡傀儡师2 小时前
使用docker 安装Redis 带配置文件(x86和arm)版本
redis·docker·容器
cuoluoche2 小时前
【docker n8n】windows环境如何挂载
运维·docker·容器
Jiangnan_Cai2 小时前
docker 安装 milvus standalone 版本 + attu
数据库·docker·milvus
木头左2 小时前
Docker 容器化基础:镜像、容器与仓库的本质解析
docker·容器·eureka
꧁༺朝花夕逝༻꧂2 小时前
docker详细操作--未完待续
linux·nginx·docker·shell
不穿铠甲的穿山甲2 小时前
docker 部署redis集群 配置
redis·docker·容器
消失在人海中3 小时前
oracle与MySQL数据库之间数据同步的技术要点
数据库·mysql·oracle