Docker 配置 Mysql 容器
1 )方案1:基于centos等linux操作系統
- 啟動centos鏡像,在里面安裝 mysql
- 這樣比較麻煩,配置的東西很多 …
2 )方案2:直接用 mysql 鏡像 (推薦)
- $
docker pull mysql
下載鏡像 - $
docker run -itd --name my_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-pass-xxx-xx mysql
- $
docker ps
找到容器id - $
docker exec -it 容器id /bin/bash
這樣來連接上mysql, 這里容器id- $
mysql -u root -p
- $
- 之后使用客戶端來連接上容器的mysql服務
- 使用 服務器物理機 ip和端口
- 測試,連接成功
- 實現mysql的數據存放到本地
- 配置文件 存放到物理機 /root/mysql/conf.d
- 數據文件 存放到物理機 /root/mysql/data
- 停止之前的容器,重新配置啟動:
- $
docker run -itd --name my_mysql2 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /root/mysql/conf.d:/etc/mysql/conf.d -v /root/mysql/data:/var/lib/mysql mysql$
- $
- 可以測試物理機和容器內的數據同步情況,測試正常
Docker 配置 Redis 容器
- $
docker pull redis
下載redis鏡像 - $
docker run -itd --name redis-test -p 6379:6379 redis
啟動redis容器 - $
docker ps
查看當前redis - $
docker exec -it 容器id /bin/bash
- $
redis-cli
可以連接上 redis
- $
- ip addr 拿到到物理機的ip之后,在客戶端連接redis
- $
redis-cli -h xxx.xxx.xxx.xxx -p 6379
- 連接成功
- $
- 安全問題,需要授權
- 啟動時需配置密碼
- $
docker run -itd --name redis2 6378:6379 redis --requirepass "123456"
- 連接 $
redis-cli
- 直接set測試 $
set u wang
, 提示 NOAUTH Authentication required.- $
auth 123456
- $
- 這樣就可以set了
- 連接 $
- 客戶端能正常連接了
Docker 配置 Mongodb 容器
-
$
docker pull mongo
-
$
docker run -itd --name mymongo -p 27017:27017 -v /root/mongo/data:/data/db mongo
-
$
docker ps 獲取 mymongo 容器id
-
$
docker exec -it mymongo /bin/bash
- $
mongo
鏈接 mongo 數據庫 - $
show dbs
查看現有數據庫 - $
use myowndb
創建自己的數據庫 - $
db.user.insert({username:'wang'})
這樣,在 myowndb 數據庫中創建了user表,并插入了一條數據 - $
show collections
看到目前的 user 集合(表) - $
show dbs
可看到多了 myowndb 的數據庫 - $
db.user.find({})
查看 user 表中所有數據
- $
-
在物理機上 $
ip addr
獲取ip地址 -
在客戶端上 連接 $
mongo xxx.xxx.xxx.xx:27017
- $
show dbs
- $
show collections
- 正常連接
- $
-
測試數據持久化
- $
docker inspect 容器id | grep mongo
查看對應映射關系 - 銷毀之前容器,創建新容器
- 測試正常,數據都在
- $
-
mongo密碼問題
docker run -d --name authMongo \-e MONGO_INITDB_ROOT_USERNAME=admin \-e MONGO_INITDB_ROOT_PASSWORD=123456 \-p 27017:27017-v /root/mongo/data:/data/db \mongo --auth
-
兩個變量
MONGO_INITDB_ROOT_USERNAME
和MONGO_INITDB_ROOT_PASSWORD
結合起來使用來傳遞環境變量,配置賬戶密碼 -
創建賬戶,進行授權
db.createUser({user: 'wang',pwd: '123456',roles: [{role: 'userAdminAnyDatabase',db: 'admin'},"readWriteAnyDatabase"], })
-
創建一個新用戶并設置該用戶的密碼
-
該用戶是在 admin 身份驗證數據庫中創建的,并被賦予角色, 這是一個"超級用戶"角色
-
$
docker exec -it authMongo /bin/bash
- $
mongo$
- $
show dbs$
發現看不到數據了 - $
db.auth('wang', '123456')$
發現沒法授權
- $
-
開始正確鑒權連接
- $
mongo admin
連接admin數據庫 - $
db.auth('wang', '123456')
- $
show dbs
這樣就能看到了,說明鑒權成功了
- $
-
在客戶端連接docker容器的mongo服務
- $
mongo xxx.xxx.xxx.xxx:27017/admin$
- admin 是數據庫,可以指定任意數據庫
- $
db.auth('wang', '123456')
這里是賬戶和密碼 - $
show dbs
發現有數據,正常連接
- $