最近實在是忙成狗,其餘的內容等稍微閒一點了一塊兒更新。mysql
這篇主要是講docker版的mysql的使用和配置信息。由於實習公司須要搞一個docker作測試環境用,還須要包括基本的依賴。最重要的是,由於這個docker是做爲jenkins的slave使用的,因此有可能不能在啓動的時候加參數。這就致使我得把docker版的mysql的整個使用和配置詳細過一遍,看看是否有代替啓動參數的設置方法。git
文中涉及到的mysql的基本信息見如下連接:github
https://hub.docker.com/r/mysql/mysql-server/sql
https://github.com/mysql/mysql-dockerdocker
文章省略了docker的安裝。到官網安一下就行了。shell
那麼林可死大特。bash
1. 常規的基本docker版mysql的使用(docker的基本操做):測試
下載(community版):spa
docker pull mysql/mysql-server:tag
這裏的tag是指mysql的版本號,好比5.5~5.7,8.0,latest。日誌
docker images
這個是用來查看當前的鏡像的清單。
docker run --name=mysql1 -d mysql/mysql-server:tag
接下來就是運行鏡像,一個最基本的運行語句大概長這個樣子。
--name制定了運行該鏡像的容器(container)的名稱。若是不聲明的話會隨機生成一個。
接着是鏡像的名字。
-d是指明鏡像的運行是扔在後臺的。
docker ps
能夠用這個語句來查看當前的image的運行狀況。
整個流程簡單來講,就是:pull鏡像,run鏡像,ps看看鏡像是否是起來了。
docker logs mysql1
logs加上容器的名稱,能夠看這個容器在運行鏡像時產生的日誌信息。若是ps看到了鏡像沒有正常運行,就能夠logs檢查一下。
docker exec -it mysql1 mysql -uroot -p
exec就是在鏡像中執行後面的操做,好比上面就是執行了mysql -uroot -p。
docker exec -it mysql1 bash
爲了方便在鏡像中執行bash命令,也能夠執行這樣的命令來開一個bash。
docker stop mysql1
這樣能夠中止container的運行。想刪除container首先要中止container。想刪除image首先要刪除container。總之是一環扣一環的。
2. docker版mysql和普通版mysql的區別
Docker images for MySQL are optimized for code size, which means they only include crucial components that are expected to be relevant for the majority of users who run MySQL instances in Docker containers.
按官網的說法,docker版的mysql只包含了必要的部分。清單以下:
/usr/bin/my_print_defaults /usr/bin/mysql /usr/bin/mysql_config /usr/bin/mysql_install_db /usr/bin/mysql_tzinfo_to_sql /usr/bin/mysql_upgrade /usr/bin/mysqladmin /usr/bin/mysqlcheck /usr/bin/mysqldump /usr/bin/mysqlpump /usr/sbin/mysqld
3. docker版mysql的使用
前面提到了查看log的方法。docker版mysql的默認配置是:第一次的root密碼是隨機生成的。因此想用root帳戶登錄,首先要查看隨機生成的密碼。
shell> docker logs mysql1 2>&1 | grep GENERATED GENERATED ROOT PASSWORD: Axegh3kAJyDLaRuBemecis&EShOs
而後就能夠-uroot -p登陸了。
登陸以後的第一件事,就是改root密碼。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
其餘的就跟本地運行mysql差很少了。
注意的一點是,咱們剛剛run docker的命令中,並無把docker中的端口和本機的端口進行映射。因此雖然mysql雖然啓動了,可是不能經過3306或者其餘端口進行訪問。
想跟在本機同樣的話,就要在啓動docker容器的時候對docker和本機的端口進行映射。
docker run -p ip:hostPort:containerPort