# Docker-单节点,多OSD集群

### 1. 创建Ceph专用网络，拉取镜像

```bash
sudo docker network create --driver bridge --subnet 172.20.0.0/16 ceph-network
sudo docker pull ceph/daemon:latest-nautilus
```

### 2. 搭建mon节点

```bash
sudo docker run -d --name ceph-mon \
    --network ceph-network \
    --ip 172.20.0.10 \
    -e CLUSTER=ceph \
    -e WEIGHT=1.0 \
    -e MON_IP=172.20.0.10 \
    -e MON_NAME=ceph-mon \
    -e CEPH_PUBLIC_NETWORK=172.20.0.0/16 \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /var/log/ceph/:/var/log/ceph/ \
    ceph/daemon:latest-nautilus mon
```

### 3. 搭建osd节点

```bash
sudo docker exec ceph-mon ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring

# 修改配置文件以兼容etx4硬盘, sudo vi /etc/ceph/ceph.conf 末尾添加
osd max object name len = 256
osd max object namespace len = 64
```

```bash
sudo docker run -d --privileged=true \
    --name ceph-osd-1 \
    --network ceph-network --ip 172.20.0.11 \
    -e CLUSTER=ceph \
    -e WEIGHT=1.0 \
    -e MON_NAME=ceph-mon \
    -e MON_IP=172.20.0.10 \
    -e OSD_TYPE=directory \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /var/lib/ceph/osd/1:/var/lib/ceph/osd \
    -v /etc/localtime:/etc/localtime:ro \
    ceph/daemon:latest-nautilus osd

sudo docker run -d --privileged=true \
    --name ceph-osd-2 \
    --network ceph-network --ip 172.20.0.12 \
    -e CLUSTER=ceph \
    -e WEIGHT=1.0 \
    -e MON_NAME=ceph-mon \
    -e MON_IP=172.20.0.10 \
    -e OSD_TYPE=directory \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /var/lib/ceph/osd/2:/var/lib/ceph/osd \
    -v /etc/localtime:/etc/localtime:ro \
    ceph/daemon:latest-nautilus osd

sudo docker run -d --privileged=true \
    --name ceph-osd-3 \
    --network ceph-network --ip 172.20.0.13 \
    -e CLUSTER=ceph \
    -e WEIGHT=1.0 \
    -e MON_NAME=ceph-mon \
    -e MON_IP=172.20.0.10 \
    -e OSD_TYPE=directory \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /var/lib/ceph/osd/3:/var/lib/ceph/osd \
    -v /etc/localtime:/etc/localtime:ro \
    ceph/daemon:latest-nautilus osd
```

### 4. 搭建mgr节点

```bash
sudo docker run -d \
    --privileged=true \
    --name ceph-mgr \
    --network ceph-network --ip 172.20.0.14 \
    -e CLUSTER=ceph \
    -p 7000:7000 \
    --pid=container:ceph-mon \
    -v /etc/ceph:/etc/ceph \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    ceph/daemon:latest-nautilus mgr


sudo docker exec ceph-mgr ceph mgr module enable dashboard
sudo docker exec mgr ceph mgr module enable dashboard
sudo docker exec mgr ceph config set mgr mgr/dashboard/ssl false
sudo docker exec mgr ceph config set mgr mgr/dashboard/server_port 7000
sudo docker exec mgr ceph config set mgr mgr/dashboard/server_addr 172.20.0.14
sudo docker exec -it mgr  /bin/sh -c "echo admin > passwd"
sudo docker exec mgr ceph dashboard set-login-credentials admin -i passwd


docker restart mgr
docker exec mgr ceph mgr services
```

### 5. 搭建rgw节点

```bash
sudo docker exec ceph-mon ceph auth get client.bootstrap-rgw -o /var/lib/ceph/bootstrap-rgw/ceph.keyring
sudo docker run -d \
    --privileged=true \
    --name ceph-rgw \
    --network ceph-network \
    --ip 172.20.0.15 \
    -e CLUSTER=ceph \
    -e RGW_NAME=ceph-rgw \
    -p 7480:7480 \
    -v /var/lib/ceph/:/var/lib/ceph/ \
    -v /etc/ceph:/etc/ceph \
    -v /etc/localtime:/etc/localtime:ro \
    ceph/daemon:latest-nautilus rgw
```

### 6. 检查Ceph状态

```bash
sudo docker exec ceph-mon ceph -s

```

### 7. 测试添加rgw用户

```bash
sudo docker exec ceph-rgw radosgw-admin user create --uid="test" --display-name="test user"
```

<figure><img src="/files/1Pvjh3Kt18cp9FCWbvat" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://close.gitbook.io/yun-wei-bi-ji/kubernetes/ceph/docker-dan-jie-dian-duo-osd-ji-qun.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
