不使用compose
- 創建volume
docker volume create --name = mongodata
其中mongodata是自定義的volume name - 查看volume
docker volume ls
- 查看volume具體內容
docker volume inspect <Volume Name>
其中Volume Name 可以通過上一條查看到 - 在docker 容器中運行 mongodb
docker run --name mongodb -v mongodata:/data/db -d -p 27017:27017 mongo
--name 設置了一個容器名稱,-v 掛載創建好的volume到容器內的某個路徑(映射),-d 是detached模式運行 - 查看容器
docker ps -a
- 進入容器,運行shell
docker exec -ti mongodb mongo
其中mongodb 是容器名 ,mongo 是要運行的命令 (會跳出一個mongo shell) - mongo shell 中的一些命令
- show dbs
- use mydb 創建一個數據庫並切換到mydb
- show collections (表)
- db.devices.insertOne(...) 創建一個 devices table 然后插入一些東西。。。
- 停止容器
docker stop <hash or container name>
- 重啟容器
docker start <hash or container name>
以上內容經過測試 絕對好用,雖然第一項就有一個 錯誤,但是我不改,就是玩。20220208 (--name =mongodata 中間的=號現在不樣用了)
使用compose
注意,compose 自己就能創建一個 common network ,如果使用命令行,還有連接多個容器到一個網絡的需求,要自己做設定,但是這里不介紹了
如果有需要,看這個 [中英字幕] Docker and Kubernetes(K8s) 初學者教程
version: '3'
services:
mongo:
image: mongo
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USER}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
- MONGO_INITDB_DATABASE=project
volumes:
- mongo-data:/data/db
mongo-express:
image: mongo-express
environment:
- ME_CONFIG_MONGODB_SERVER=mongo
- ME_CONFIG_MONGODB_PORT=27017
- ME_CONFIG_MONGODB_ENABLE_ADMIN=false
- ME_CONFIG_MONGODB_AUTH_DATABASE=admin
- ME_CONFIG_MONGODB_AUTH_USERNAME=${MONGO_ROOT_USER}
- ME_CONFIG_MONGODB_AUTH_PASSWORD=${MONGO_ROOT_PASSWORD}
- ME_CONFIG_BASICAUTH_USERNAME=${MONGOEXPRESS_LOGIN}
- ME_CONFIG_BASICAUTH_PASSWORD=${MONGOEXPRESS_PASSWORD}
depends_on:
- mongo
ports:
- "8888:8081"
depends_on:
- mongo
volumes:
mongo-data:
driver: local
## 這是.env
MONGO_ROOT_USER=devroot
MONGO_ROOT_PASSWORD=devroot
MONGOEXPRESS_LOGIN=dev
MONGOEXPRESS_PASSWORD=dev
- 使用docker-compose
docker-compose -f docker-compose.yaml up
-f代表要使用一個文件 up 指 start - 停止compose后的容器
docker-compose -f docker-compose.yaml down
以上的內容應該能幫助你
- 使用volume 來持久化 mongodb的數據
- 使用mongo-express 來作為用戶界面 查看MongoDB中的數據
- 注意 ME_CONFIG_MONGODB_ENABLE_ADMIN=false ,這樣一定程度上保護了數據庫的安全性