docker封裝mysql的一些心得
簡介:今天咱們來聊聊容器化mysql的一些心得
版本:Docker version 18.03 mysql 5.7.21
考慮條件:
1 選好合適的docker鏡像
2 容器安裝的內容
3 分離設置的方式
我的思路
1 關於mysql 安裝設計
1 盡量只安裝基礎軟件包+mysql服務在容器內,像percona等第三方軟件不要安裝在容器內,因為軟件包本身會依賴很多軟件,要保持容器的干凈整潔
2 上述第三方軟件可以選擇安裝在宿主內,在宿主內通過映射端口進行操作
2 關於mysql 服務設計
1 mysql 數據目錄和配置文件采用外掛方式,最后保存在本地磁盤,不要通過NFS等其他掛載方式,減少網絡開銷,配置文件也便於修改
2 mysql 的err和pid的命名方式采用固定命名,因為容器每次重啟的hostname都要改變
3 mysql配置文件最好開啟雙寫+雙1模式,增強數據有效性,如果容器損壞造成頁損壞導致數據不可用就很糟糕了
4 mysql開機啟動采用mysqld_safe形式,這樣能使容器不退出
5 對於mysql的初始化操作我的意見是初始化一次作為標准就足夠了,然后將這部操作摘除dockerfile,將標准化的數據文件作為下一個容器的啟動根據(記得刪除auto.cnf)
3 關於dockerfile編寫
1 盡量安裝精簡的軟件,越少越好,最好只安裝服務本身所 必須的軟件.你要明白,docker本身只是做服務的容器
2 大量的RUN命令能合並的都合並,這樣能減少docker容器生成的嵌套層,這對於鏡像本身是非常重要的
3 開機啟動腳本調用cmd命令
4 對於dockerfile的編譯,盡量將基礎環境安裝和不太變動的操作寫在前面,這樣在調試的時候會減少編譯時間
5 docker容器內不支持rc.local的開機啟動
4 docker運行的注意事項
1 -e 選項可以賦予容器內變量,這樣可以有效進行定制化啟動,比如定制化buffer_pool,然后可以在my.cnf進行定制化后啟動服務
2 關於IP地址的固定我們也在探索
5 docker常用命令
1 docker build -t mysql:v1 . 編譯dockerfile
2 docker ps 查看正在運行的容器
3 docker ps -a 查看歷史運行的容器
4 docker image 查看鏡像
5 docker rm $(docker ps -a -q) 刪除所有容器
6 docker run -itd mysql:v1 -e 'vale' -v 'directory' --name 'name' 啟動
7 docker exec -it name /bin/bash 運行
8 docker tag 打標簽 然后push 到私有倉庫
總結:這只是一個單純的docker定制,我們的目標是在k8s中進行容器化的管理,敬請期待下一篇,有錯誤和建議敬請留言指出