最近需要在虚拟机上构建搭建mongo的docker容器,搞了半天老有错,归其原因,是因为现在最新的mango镜像的启动方式发生了变化,故此现在好多帖子,就是错的。
ok,话不多说:
# 拉取最新镜像(就是这个镜像,跟原先的已经不一样了,会导致后面启动mango的时候出问题)
docker pull mongo:latest
# 查看一下
docker images
# 创建一个存放数据的目录
mkdir -p ~/data/mongo
# 创建mongodb容器
docker run -p 27017:27017 -v ~/data/mongo:/data/db --name mongodb --restart=always -d mongo
在上面的命令中,几个命令参数的详细解释如下:
-p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务
-v 为设置容器的挂载目录,这里是将本机的“/data/mongo”目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
--name 为设置该容器的名称
-d 用于以后台模式(detached mode)运行容器
# 启动mongo容器,并直接进入交互模式
docker exec -it mongodb mongosh
或者
docker exec -it mongodb mongosh admin
这里需要注意,启动的时候用的是 mongosh,而不是mongo,这是新版mongo镜像于老版的差异导致的,也就造成了各种帖子不管用的原因了。
# 切换到admin数据库
use admin
# 创建用户
db.createUser({user: "admin",pwd: "m3206oa20o7a1jg9a5",roles:["root"]})
# 登录认证
db.auth('admin', 'm3206oa20o7a1jg9a5')
# 查看数据库
show dbs
# 创建数据库并设置密码
use huchi
db.createUser({user: "admin",pwd: "m3206oa20o7a1jg9a5",roles:["readWrite"]})
db.auth('admin', 'm3206oa20o7a1jg9a5')
到这就完成了....
然后,就是使用了,也比较简单:
db.xx_数据表.insert( { name:"abc", age:22, 'weight': '50斤'} )
这就完事了.....
=============================
使用Docker安装Redis是一个快速且简便的过程。以下是详细的步骤:
1. 安装 Docker
首先,确保你的系统上已经安装了Docker。如果尚未安装,可以参考Docker官方文档根据你的操作系统进行安装。
2. 拉取 Redis 镜像
打开终端或命令提示符,运行以下命令来拉取最新版本的Redis镜像:
bash
深色版本
docker pull redis
如果你想拉取特定版本的Redis,可以在pull
命令后面指定标签,例如,拉取5.0版本:
bash
深色版本
docker pull redis:5.0
3. 运行 Redis 容器
在成功拉取Redis镜像后,你可以通过以下命令启动一个Redis容器:
bash
深色版本
docker run --name my-redis -d redis
这里,--name my-redis
是给你的容器起的名字,-d
表示让容器在后台运行。
如果你需要将Redis的数据持久化到主机上,可以添加卷映射选项。例如,将主机的/my/local/dir
目录映射到容器内的/data
目录(Redis默认存储数据的位置):
bash
深色版本
docker run --name my-redis -v /my/local/dir:/data -d redis
此外,如果你想指定Redis监听的端口,可以使用-p
参数。例如,将主机的6379端口映射到容器的6379端口:
bash
深色版本
docker run --name my-redis -p 6379:6379 -d redis
这里注意,如果选择这个命令:
docker run --name my-redis -v /my/local/dir:/data -d redis
那么等于没有添加端口映射。外界就无法访问了。
所以,这块不能这么干。最好把 -p 参数也加上。已经创建的容器需要删了它。
docker run --name redis -v /home/ymk/data/redis:/data -p 6379:6379 -d redis
4. 管理 Redis 容器
你可以使用以下命令查看正在运行的容器:
bash
深色版本
docker ps
要停止或启动你的Redis容器,可以分别使用:
bash
深色版本
docker stop my-redis
docker start my-redis
5. 使用 Redis
容器启动之后,你可以使用docker exec
命令进入Redis容器内部,或者直接从外部使用redis-cli
连接到该容器。如果你已经在容器中安装了redis-cli
,可以直接运行:
bash
深色版本
docker exec -it my-redis redis-cli
如果想从主机连接,确保你已经安装了redis-cli
,然后执行:
bash
深色版本
redis-cli -h localhost -p 6379
这样,你就完成了使用Docker安装和配置Redis的基本过程。
看下具体例子:
redis没有具体的数据库,只有0~15分区。默认是0分区。
如果要换分区的话:
然后就可以插入key,value 了。
set key value
以及:
get key
-
哈希类型:用于存储对象。
bash深色版本
HSET myhash field1 "some value"
获取字段的值:
bash深色版本
HGET myhash field1
-
列表类型:用于存储有序的字符串列表,可以从两端插入或移除元素。
bash深色版本
LPUSH mylist "value1" RPUSH mylist "value2"
查看列表内容:
bash深色版本
LRANGE mylist 0 -1
LRANGE mylist 0 -1
是 Redis 中用于获取列表类型数据的命令。具体来说,这个命令是用来从名为 mylist
的列表中获取元素的。
- LRANGE:这是Redis中的一个命令,用来返回列表中指定区间内的元素。
- mylist:这是你的列表的名字。在使用
LRANGE
命令时,你需要指定从中检索元素的列表名称。 - 0 -1:这两个数字指定了你想要检索的元素的范围。在这个例子中:
0
表示起始索引。列表的第一个元素的索引是0。-1
表示结束索引。当你在Redis的LRANGE
命令中使用-1
作为结束索引时,它表示列表的最后一个元素。因此,0 -1
实际上意味着“从第一个元素到最后一个元素”,即获取列表中的所有元素。
所以,执行LRANGE mylist 0 -1
将会返回mylist
列表中的所有元素,按照它们被插入的顺序排列。如果你只想获取列表的一部分,你可以改变这两个数字。例如,LRANGE mylist 0 2
将返回列表中的前三个元素(索引为0、1和2的元素)。
-
集合类型:无序集合,不允许重复成员。
bash深色版本
SADD myset "member1" SADD myset "member2"
获取所有成员:
bash深色版本
SMEMBERS myset
-
有序集合类型:类似于集合,但是每个成员关联一个分数,这使得成员可以根据分数来排序。
bash深色版本
ZADD myzset 1 "one" ZADD myzset 2 "two"
获取按分数排序的成员:
bash深色版本
ZRANGE myzset 0 -1 WITHSCORES
如果你希望清理数据库并删除所有现有的键,可以使用命令 FLUSHALL
来清空 Redis 数据库中的所有数据。例如:
sh
深色版本
127.0.0.1:6379> FLUSHALL
执行上述命令后,Redis 数据库中的所有键都将被删除。请谨慎使用此命令,因为它会清除数据库中的所有数据。