最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB Docker 鏡像制作與部署完整流程

 更新時(shí)間:2025年11月14日 11:46:22   作者:醉風(fēng)塘  
該文章介紹了如何使用Docker部署MongoDB,包括創(chuàng)建Dockerfile、配置文件、數(shù)據(jù)庫初始化腳本,構(gòu)建鏡像、創(chuàng)建和運(yùn)行容器、鏡像導(dǎo)出與導(dǎo)入、擴(kuò)展功能、安全建議和故障排除,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

1. Dockerfile 文件制作

創(chuàng)建無后綴的 Dockerfile 文件:

# Dockerfile文件格式
# This dockerfile uses the mongo:7.0.25 image
# VERSION 1 - EDITION 1
# Author: cxnb
# Command format: Instruction [arguments / command] ..
# 1、第一行必須指定基礎(chǔ)鏡像信息
FROM mongo:7.0.25
# 2、維護(hù)者信息
MAINTAINER cxnb
# 3、替換配置文件為自己的配置文件
# COPY ./mongod.conf /etc/mongod.conf
# 4、復(fù)制創(chuàng)建cxnb數(shù)據(jù)庫腳本到指定目錄
COPY ./init-db.sh /docker-entrypoint-initdb.d/
RUN chmod +x /docker-entrypoint-initdb.d/init-db.sh
# 5、指定用戶名密碼
ENV MONGO_INITDB_ROOT_USERNAME=admin
ENV MONGO_INITDB_ROOT_PASSWORD=admin123
# 6、標(biāo)記容器掛載目錄
VOLUME /data/db
VOLUME /var/log/mongodb/mongod.log
# 7、標(biāo)記對(duì)外公布的端口
EXPOSE 27017
# 8、設(shè)定時(shí)區(qū),如果不設(shè)定時(shí)區(qū),容器時(shí)間和主機(jī)時(shí)間會(huì)不一致。
ENV TZ=Asia/Shanghai
# 9、進(jìn)入容器后自動(dòng)運(yùn)行的命令。
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

2. MongoDB 配置文件

創(chuàng)建 mongod.conf 文件:

# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
  # engine:
  # mmapv1:
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2
# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo
security:
  authorization: enabled
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:

3. 數(shù)據(jù)庫初始化腳本

創(chuàng)建 init-db.sh 腳本:

#!/bin/bash
# 連接到 MongoDB 服務(wù)器
# 如果是4.0版本,則用mongo
# 如果先用mongo命令配置,容器啟動(dòng)生成了mongodb的/data/db文件,則換成mongosh配置時(shí),需要先刪除db文件夾中的內(nèi)容。
mongosh <<EOF
use admin
db.auth('admin', 'admin123')
use cxnb
db.createUser({ 
  user: 'admin', 
  pwd: 'admin123', 
  roles: [{ 
    role: 'readWrite', 
    db: 'cxnb' 
  }] 
})
EOF

重要提示:確保腳本具有執(zhí)行權(quán)限:

chmod +x init-db.sh

4. 文件組織

將以下文件放置在宿主機(jī)的同一目錄中:

  • dockerfile (無后綴)
  • mongod.conf
  • init-db.sh

目錄結(jié)構(gòu)示例:

/mongodb-docker/
├── dockerfile
├── mongod.conf
└── init-db.sh

5. 構(gòu)建 Docker 鏡像

docker build -t mongodb:7.0.25 . -f dockerfile

注意:命令末尾的 . 表示使用當(dāng)前目錄作為構(gòu)建上下文,不能省略。

6. 創(chuàng)建并運(yùn)行容器

6.1 準(zhǔn)備宿主機(jī)目錄

# 創(chuàng)建數(shù)據(jù)目錄
mkdir -p /mnt/mongodb/data && chmod 777 /mnt/mongodb/data
# 創(chuàng)建日志目錄
mkdir -p /mnt/mongodb/logs && chmod 777 /mnt/mongodb/logs
# 創(chuàng)建配置目錄
mkdir -p /mnt/mongodb/conf && chmod 777 /mnt/mongodb/conf
# 復(fù)制配置文件
cp ./mongod.conf /mnt/mongodb/conf/mongod.conf

6.2 運(yùn)行容器

docker run \
  --privileged=true \
  --name mongodb \
  -p 27017:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=admin123 \
  -v /mnt/mongodb/data:/data/db \
  -v /mnt/mongodb/logs:/var/log/mongodb \
  -v /mnt/mongodb/conf/mongod.conf:/etc/mongod.conf \
  -v /etc/localtime:/etc/localtime \
  -d \
  mongodb:7.0.25 --auth

可選參數(shù)

  • 添加 --restart=always 使容器自動(dòng)重啟
  • 添加 --network custom-network 指定自定義網(wǎng)絡(luò)

6.3 驗(yàn)證容器狀態(tài)

# 檢查容器運(yùn)行狀態(tài)
docker ps -a | grep mongodb
# 查看容器日志
docker logs mongodb
# 進(jìn)入容器
docker exec -it mongodb mongosh -u admin -p admin123

7. 鏡像導(dǎo)出與導(dǎo)入

7.1 導(dǎo)出鏡像

# 導(dǎo)出鏡像為tar文件
docker save mongodb:7.0.25 -o /opt/docker/images/mongodb_7.0.25.tar

7.2 壓縮鏡像

cd /opt/docker/images
gzip mongodb_7.0.25.tar

7.3 導(dǎo)入鏡像

# 方法一:直接導(dǎo)入壓縮文件
docker load -i /opt/docker/images/mongodb_7.0.25.tar.gz
# 方法二:先解壓再導(dǎo)入
gunzip mongodb_7.0.25.tar.gz
docker load -i mongodb_7.0.25.tar

8. 擴(kuò)展功能

8.1 數(shù)據(jù)庫備份與恢復(fù)

# 備份數(shù)據(jù)庫
docker exec mongodb mongodump -u admin -p admin123 --authenticationDatabase admin -o /backup/
docker cp mongodb:/backup/ ./local_backup/
# 恢復(fù)數(shù)據(jù)庫
docker cp ./local_backup/ mongodb:/restore/
docker exec mongodb mongorestore -u admin -p admin123 --authenticationDatabase admin /restore/

8.2 使用 Docker Compose

創(chuàng)建 docker-compose.yml 文件:

version: '3.8'
services:
  mongodb:
    build:
      context: .
      dockerfile: dockerfile
    container_name: mongodb
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=admin
      - MONGO_INITDB_ROOT_PASSWORD=admin123
    volumes:
      - /mnt/mongodb/data:/data/db
      - /mnt/mongodb/logs:/var/log/mongodb
      - /mnt/mongodb/conf/mongod.conf:/etc/mongod.conf
      - /etc/localtime:/etc/localtime
    restart: unless-stopped
    command: ["--auth"]

啟動(dòng)服務(wù):

docker-compose up -d

9. 安全建議

  1. 修改默認(rèn)密碼:生產(chǎn)環(huán)境中務(wù)必使用強(qiáng)密碼替換默認(rèn)密碼
  2. 網(wǎng)絡(luò)隔離:將 MongoDB 容器放置在內(nèi)部網(wǎng)絡(luò)中,避免直接暴露到公網(wǎng)
  3. 定期更新:定期更新基礎(chǔ)鏡像以獲取安全補(bǔ)丁
  4. 備份策略:建立定期備份機(jī)制
  5. 訪問控制:限制只有必要的主機(jī)可以訪問 MongoDB 端口

10. 故障排除

常見問題:

  1. 權(quán)限錯(cuò)誤:確保宿主機(jī)目錄具有適當(dāng)權(quán)限
  2. 配置文件錯(cuò)誤:檢查 YAML 格式和縮進(jìn)
  3. 端口沖突:確保 27017 端口未被占用
  4. 初始化失敗:檢查 init-db.sh 腳本格式和權(quán)限

調(diào)試命令:

# 查看容器日志
docker logs mongodb
# 進(jìn)入容器檢查文件
docker exec -it mongodb bash
# 檢查 MongoDB 服務(wù)狀態(tài)
docker exec mongodb mongosh --eval "db.adminCommand('serverStatus')"

通過以上步驟,您可以成功創(chuàng)建、部署和管理基于 Docker 的 MongoDB 實(shí)例。

到此這篇關(guān)于MongoDB Docker 鏡像制作與部署完整流程的文章就介紹到這了,更多相關(guān)MongoDB Docker 鏡像部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)

    Jenkins+Docker持續(xù)集成的實(shí)現(xiàn)

    Jenkins是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個(gè)開放易用的軟件平臺(tái),使軟件的持續(xù)集成變成可能。本文介紹了Jenkins Docker持續(xù)集成,分享給大家
    2021-05-05
  • 詳解Docker目錄掛載的方法總結(jié)

    詳解Docker目錄掛載的方法總結(jié)

    本篇文章主要介紹了Docker目錄掛載的總結(jié),現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • Docker入門安裝教程(小白篇)

    Docker入門安裝教程(小白篇)

    這篇文章主要介紹了Docker入門安裝教程(小白篇),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • Docker?部署?OnlyOffice?文檔服務(wù)器的操作方法

    Docker?部署?OnlyOffice?文檔服務(wù)器的操作方法

    本文詳細(xì)介紹了如何使用Docker部署OnlyOffice文檔服務(wù)器,包括準(zhǔn)備工作、設(shè)置變量和目錄結(jié)構(gòu)、創(chuàng)建并運(yùn)行OnlyOffice容器、訪問OnlyOffice文檔服務(wù)器以及配置和管理,通過這些步驟,你可以在本地快速搭建一個(gè)強(qiáng)大的文檔編輯平臺(tái),感興趣的朋友一起看看吧
    2025-02-02
  • Docker?Windows下如何安裝詳細(xì)介紹(圖文)

    Docker?Windows下如何安裝詳細(xì)介紹(圖文)

    這篇文章主要介紹了Docker?Windows下如何安裝詳細(xì)介紹(圖文)的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Docker 安裝及配置鏡像加速的實(shí)現(xiàn)

    Docker 安裝及配置鏡像加速的實(shí)現(xiàn)

    這篇文章主要介紹了Docker 安裝及配置鏡像加速的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Docker探索namespace詳解

    Docker探索namespace詳解

    以前對(duì)docker中的namespace了解甚少,今天在網(wǎng)上查閱相關(guān)文章,發(fā)現(xiàn)這篇還不錯(cuò),介紹了namespace資源隔離以及進(jìn)行namespace api操作的四種方式等內(nèi)容,這里分享給大家,供參考。
    2017-10-10
  • CentOS安裝Docker的方法

    CentOS安裝Docker的方法

    這篇文章介紹了CentOS安裝Docker的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • docker?search?mysql報(bào)錯(cuò)問題分析及解決

    docker?search?mysql報(bào)錯(cuò)問題分析及解決

    Docker是現(xiàn)在非常流行的一種容器化技術(shù),能夠方便開發(fā)者將應(yīng)用程序打包進(jìn)入容器,做到跨平臺(tái)的部署,這篇文章主要介紹了docker?search?mysql報(bào)錯(cuò)問題分析及解決的相關(guān)資料,需要的朋友可以參考下
    2025-11-11
  • 解決registry私有倉庫空間清理問題

    解決registry私有倉庫空間清理問題

    Docker Registry因歷史鏡像堆積導(dǎo)致磁盤空間不足,需定期清理,通過執(zhí)行registry_garbage_collect.sh腳本及查看config.yml配置文件,可管理存儲(chǔ)策略,釋放占用空間
    2025-08-08

最新評(píng)論

内乡县| 张家口市| 龙里县| 东台市| 台江县| 泰兴市| 腾冲县| 巴塘县| 扶余县| 临汾市| 会理县| 娱乐| 涞源县| 台山市| 莒南县| 尼玛县| 中西区| 肥西县| 红桥区| 淮滨县| 五原县| 吉水县| 双流县| 商洛市| 新田县| 拉萨市| 华宁县| 图片| 波密县| 临安市| 遵化市| 休宁县| 乌审旗| 土默特右旗| 瑞安市| 紫阳县| 三原县| 荣成市| 绥滨县| 樟树市| 集安市|