在Docker中,容器(container)是基于镜像(image)运行的实例。而容器镜像(container image)是一个轻量级、独立、可执行的软件包,其中包含运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
容器中的数据通常是临时性的,当容器被删除时,其中的数据也会被清除。为了使数据持久化或者与主机进行数据共享,Docker提供了卷(volume)的概念。
Docker容器卷(volume)是一个特殊的目录,它可以绕过容器的文件系统,并直接将数据存储在主机的文件系统中。通过将卷挂载到容器中,可以在容器启动和关闭时持久存储数据。这样可以使数据在容器之间共享,也可以让数据在容器删除后仍然保留。
使用卷可以在容器之间共享数据,同时也可以用来备份或恢复数据。通过卷,可以实现数据持久化以及数据共享的需求。
使用docker启动redis
拉取 Redis 镜像:首先,在命令行中运行以下命令来拉取 Redis 镜像(可能有些慢):
docker pull redis:latest运行 Redis 容器:运行以下命令来启动一个 Redis 容器:
docker run --name my-redis-container -d redis连接到 Redis 容器:如果你想要连接到 Redis 容器并使用 Redis 命令行客户端进行操作,可以运行以下命令:
docker exec -it my-redis-container redis-cli这将打开 Redis 命令行客户端,你可以在其中执行 Redis 命令。
执行一个redis测试:
set mykey "hello redis"
// 输出:ok
get mykey
// 输出: hello redis
springboot连接redis:
// 1. 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
// 2. 添加测试代码
@SpringBootTest
public class Demo2ApplicationTests {
@Test
public void set(@Autowired RedisTemplate redisTemplate) {
ValueOperations ops = redisTemplate.opsForValue();
ops.set("key1", "value1");
}
@Test
public void get(@Autowired RedisTemplate redisTemplate) {
ValueOperations ops = redisTemplate.opsForValue();
Object key1 = ops.get("key1");
System.out.println(key1);
}
}
// 3. 启动项目报:无法连接到redis
// 此文因为是docker启动的redis,所以与应用并不同属于一网络环境。可以将Redis 服务地址绑定到 0.0.0.0,监听来自任何 IP 的连接。
// 修改启动命令为 添加参数-p 6379:6379
docker run -d -p 6379:6379 --name my-redis redis使用docker启动mongodb
拉取 mongo 镜像:首先,在命令行中运行以下命令来拉取 Redis 镜像(可能有些慢):
docker pull mongo:latest运行 mongo 容器:运行以下命令来启动一个 mongo 容器:
docker run -d -p 27017:27017 --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo连接到 mongo 容器:如果你想要连接到 mongo 容器并使用 mongo 命令行客户端进行操作,可以运行以下命令:
docker exec -it my-mongo-container bash这将打开 mongo 命令行客户端,你可以在其中执行 mongo 命令。
登录到数据库:
mongosh -u "admin" -p "123456" --authenticationDatabase "admin"基础的mongo指令:需要注意MongoDB 6.0全面弃用了mongo而使用mongosh。 [官方说明链接:https://www.mongodb.com/docs/mongodb-shell/#the-mdb-shell-versus-the-legacy-mongo-shell](https://www.mongodb.com/docs/mongodb-shell/#the-mdb-shell-versus-the-legacy-mongo-shell )
# 创建数据库:在 MongoDB 中,只有当你插入一些数据时,数据库才会被创建。因此,你可以直接开始使用新的数据库,MongoDB 会在需要时自动创建它。
use mydatabase
db.myCollection.insertOne({ key: "value" })
show dbs
# 显示所有数据库
use mydatabase
# 选择要使用的数据库
db.myCollection.insertOne({ key: "value" })
# 插入文档
db.myCollection.find()
# 查询文档
db.myCollection.updateOne({ key: "value" }, { $set: { key: "new value" } })
# 修改文档
db.myCollection.deleteOne({ key: "value" })
# 删除文档
# 退出登录 按键 control+c
# 退出bash exit