docker
Published on Oct 28, 2024, with 26 view(s) and 0 comment(s)
Ai 摘要:本文介绍了Docker容器的基本概念,包括容器镜像、数据持久化(卷)以及如何通过Docker启动Redis和MongoDB服务。详细说明了Redis容器的拉取、运行、连接及Spring Boot集成方法,并提供了MongoDB容器的部署、连接及基础操作指令。文章还强调了网络配置对容器间通信的重要性,并给出了实际应用中的解决方案。

在Docker中,容器(container)是基于镜像(image)运行的实例。而容器镜像(container image)是一个轻量级、独立、可执行的软件包,其中包含运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

容器中的数据通常是临时性的,当容器被删除时,其中的数据也会被清除。为了使数据持久化或者与主机进行数据共享,Docker提供了卷(volume)的概念。

Docker容器卷(volume)是一个特殊的目录,它可以绕过容器的文件系统,并直接将数据存储在主机的文件系统中。通过将卷挂载到容器中,可以在容器启动和关闭时持久存储数据。这样可以使数据在容器之间共享,也可以让数据在容器删除后仍然保留。

使用卷可以在容器之间共享数据,同时也可以用来备份或恢复数据。通过卷,可以实现数据持久化以及数据共享的需求。

使用docker启动redis

  1. 拉取 Redis 镜像:首先,在命令行中运行以下命令来拉取 Redis 镜像(可能有些慢):

docker pull redis:latest
  1. 运行 Redis 容器:运行以下命令来启动一个 Redis 容器:

docker run --name my-redis-container -d redis
  1. 连接到 Redis 容器:如果你想要连接到 Redis 容器并使用 Redis 命令行客户端进行操作,可以运行以下命令:

docker exec -it my-redis-container redis-cli

这将打开 Redis 命令行客户端,你可以在其中执行 Redis 命令。

  1. 执行一个redis测试:

set mykey "hello redis"
// 输出:ok
get mykey 
// 输出: hello redis

Description

  1. 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

  1. 拉取 mongo 镜像:首先,在命令行中运行以下命令来拉取 Redis 镜像(可能有些慢):

docker pull mongo:latest
  1. 运行 mongo 容器:运行以下命令来启动一个 mongo 容器:

docker run -d  -p 27017:27017 --name mongodb -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=123456 mongo
  1. 连接到 mongo 容器:如果你想要连接到 mongo 容器并使用 mongo 命令行客户端进行操作,可以运行以下命令:

docker exec -it my-mongo-container bash

这将打开 mongo 命令行客户端,你可以在其中执行 mongo 命令。

  1. 登录到数据库:

mongosh -u "admin" -p "123456" --authenticationDatabase "admin"
  1. 基础的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