github上有一個專門的docker-libary項目,里面有各種各樣常用的docker鏡像,可以做為學習的示例,今天研究下其中mysql鏡像的用法,國內鏡像daocloud.io也能找到mysql的鏡像,但根據其參考文檔在mac上嘗試了數次,將mysql數據庫文件存儲在mac本機時,啟動總是報錯,大意是docker容器運行時,容器的當前用戶mysql,由于權限不足無法mac本機上創建文件,stackoverflow上有人解決了這個問題,參考其解決方法,重新整理了下Dockerfile文件,內容如下(主要是增加了vim的安裝,以方便直接在容器內修改mysql配置文件):
FROM mysql:latest MAINTAINER jimmy.yang <yjmyzz@126.com> LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest" RUN apt-get update RUN apt-get -y install vim RUN usermod -u 1000 mysql RUN mkdir -p /var/run/mysqld RUN chmod -R 777 /var/run/mysqld
將上面這段保存成名為"Dockerfile"的文件,然后在當前目錄下,輸入:
docker build -t "yjmyzz/mysql-osx:latest" .
注意最后有一個點,-t后的內容為image的tag,可以根據需要修改成自己的內容。build完成后,可用docker images ls確認下是否在本機生成了名為yjmyzz/mysql-osx的鏡像,接著就可以創建mysql容器了,示例如下:
docker run -d -h mysql \ -v /Users/yjmyzz/data/db/mysql:/var/lib/mysql \ -p 0.0.0.0:3306:3306 --name mysql \ -e MYSQL_ROOT_PASSWORD=123456 yjmyzz/mysql-osx
上面有幾個參數值大家根據需要自行調整:
-v 后面的/Users/yjmyzz/data/db/mysql 為mac本機的目錄,用于存放mysql數據庫文件(創建前要注意該目錄必須為空,且必須是當前登錄用戶~/下,且要有讀寫權限)
-p 后面的部分為端口映射
MYSQL_ROOT_PASSWORD=123456為root賬號的密碼
mac上連接驗證:
mysql -h192.168.99.100 -uroot -p123456
上面的ip地址,大家換成自己虛擬機default的IP
mysql參數調整:
先進入容器
docker exec -it mysql sh
然后在容器內
vi /etc/mysql/my.cnf
注意:修改完mysql參數后,如果直接在容器內 service mysql restart ,容器就退出了(因為mysql stop完成的瞬間,沒有命令在運行,容器生命周期結束),需要在mac機上執行
docker start mysql
上傳鏡象
為了以后使用方便,可以將mac版的mysql鏡像上傳到daocloud.io,命令如下:
docker login daocloud.io docker tag yjmyzz/mysql-osx daocloud.io/yjmyzz/mysql-osx:latest docker push daocloud.io/yjmyzz/mysql-osx:latest
提醒:daocloud push上去的鏡像,目前未提供刪除功能(客服說是以后會提供),一旦上傳了,目前就沒辦法刪除了,所以千萬不要在鏡像里放一些敏感信息。
參考文章:
文章列表