- 到docker hub中可以直接拉取images來安裝
- 使用指令安裝時要注意版本,我要安裝5.7的版本
sudo docker pull mysql:5.7

sudo docker images

因不想每次都輸入sudo 將使用者切換至root,VM是由vagrant安裝的,密碼也是vagrant。
執行映像檔並將MySql的一些重要目錄掛載至VM
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql:5.7
Windows請參考以下指令
docker run -p 3306:3306 --name mysql -v C:\mydata\mysql\log:/var/log/mysql -v C:\mydata\mysql\data:/var/lib/mysql -v C:\mydata\mysql\conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=e23s5 -d mysql:5.7
-p 3306:3306 把容器的port mapping到VM主機的port
-v /mydata/**:/var/ 把目錄掛載到VM主機
-e MYSQL_ROOT_PASSWORD 初始化ROOT密碼
(此步驟可不做) 如有要關閉swap檔案,且需要調整VM的記憶體大小,看VM安裝完預設是512M,所以我調整成2048M,並且把swap先關閉然後刪除swapfile,這個檔案表示了你目前的記憶體容量。
sudo swapoff /swapfile
sudo rm /swapfile
(此步驟可不做) 如果遇到啟動後馬上被終止有可能是硬碟滿了,此時要先找出佔空間的目錄
du -hsx /vagrant/AppData/Local/Application\ Data/* | sort -hr | head
26G /vagrant/AppData/Local/Application Data/Application Data 31M /vagrant/AppData/Local/Application Data/Adobe 1.1M /vagrant/AppData/Local/Application Data/Apple Computer 108K /vagrant/AppData/Local/Application Data/IconCache.db 4.0K /vagrant/AppData/Local/Application Data/PUTTY.RND 4.0K /vagrant/AppData/Local/Application Data/AdvancedConfigurator 0 /vagrant/AppData/Local/Application Data/y-w-y.com 0 /vagrant/AppData/Local/Application Data/Yarn 0 /vagrant/AppData/Local/Application Data/Wox 0 /vagrant/AppData/Local/Application Data/VMware 我也不知道為什麼這檔案寫入到VM裡面,這些看起來是我實體機的一些檔案...
刪除佔空間最大的目錄
rm -rf Application\ Data/
如果因為上一步驟啟動失敗的話要先將容器停止並刪除docker stop mysql
docker rm mysql
==========================================
查看剛剛執行的容器
docker ps

查看mysql被安裝於哪個位置
whereis mysql

因為有將特定目錄掛載出來,可以方便在VM中修改設定檔
vi /mydata/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection=utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重新啟動mysql
docker restart mysql
進入mysql容器
docker exec -it mysql bash
檢查容器內的設定檔是否有寫入
cat /etc/mysql/my.cnf
有寫入剛剛內容表示成功
開啟類似NAT的功能,讓docker內網可以訪問外網資源
firewall-cmd --permanent --zone=public --add-masquerade
開啟3306
firewall-cmd --add-service=mysql --permanent
重新載入防火牆規則
firewall-cmd --reload