本文基於官方映象執行mysql容器,通過自定義配置檔案指定資料存放路徑、日誌存放路徑等mysql配置。在執行容器時,通過將宿主機目錄掛在到容器目錄確保容器損壞情況下資料不會丟失。
docker pull mysql:5.7
啟動mysql映象時,可以通過 docker run 命令列傳遞乙個或多個變數來設定mysql例項的配置。關於mysql變數的詳細資訊可參閱: 獲取mysql本身所遵循的環境變數的文件。
以下是一些常用的mysql環境變數:
mysql_root_password:
為mysql root超級使用者帳戶設定密碼
mysql_database:
指定在映象啟動時建立的資料庫的名稱,如果同時提供了使用者/密碼(見下文),則該使用者將被授予此資料庫的超級使用者訪問許可權(對應於grant all)。
mysql_user, mysql_password:
建立新使用者並設定該使用者的密碼,此使用者將被授予mysql_database變數指定的資料庫的超級使用者許可權(見上文)。 這兩個變數都是建立使用者所必需的。請注意,不需要使用此機制來建立超級超級使用者,預設情況下會使用mysql_root_password變數指定的密碼建立該使用者。
mysql_allow_empty_password:
設定為yes以允許使用root使用者的空密碼啟動容器。
mysql_random_root_password:
設定為yes以為root使用者生成隨機初始密碼。生成的root密碼將列印到stdout
mysql_onetime_password:
初始化完成後,將root(不是mysql_user中指定的使用者!)使用者設定為已過期,在首次登入時強制更改密碼。
僅在mysql 5.6+上支援此功能。 在mysql 5.5上使用此選項將在初始化期間丟擲適當的錯誤。
許多配置選項可以作為標誌傳遞給mysqld。 這將使您可以靈活地自定義容器,而無需cnf檔案。 例如,如果要更改所有表的預設編碼和排序規則以使用utf-8(utf8mb4),只需執行以下命令:
docker run --name some-mysql -e mysql_root_password=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
如果您想檢視可用選項的完整列表,請執行:
docker run -it --rm mysql:tag --verbose --help
在宿主機分別建立以下資料夾:
配置檔案存放路徑:/usr/local/mysql/conf
資料檔案存放路徑:/usr/local/mysql/data
日誌檔案存放路徑:/usr/local/mysql/logs
建立配置檔案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
datadir=/usr/local/mysql/data
default-time_zone = '+8:00'
#錯誤日誌路徑
log_error = /usr/local/mysql/logs/mysql_error.log
slow_query_log = 1
#超過1秒則為慢查詢
long_query_time = 1
slow_query_log_file = /usr/local/mysql/logs/mysql_slow.log
sql-mode="strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution"
docker run -p 3306:3306 --name lkf-mysql
-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf
-v /usr/local/mysql/logs:/usr/local/mysql/logs
-v /usr/local/mysql/data:/usr/local/mysql/data
-e mysql_root_password=root
-d mysql:5.7
-p 3306:3306:將容器的3306埠對映到主機的3306埠-v /usr/local/mysql/conf/my.cnf:/etc/mysql/my.cnf:將主機當前目錄下的my.cnf掛載到容器的/etc/mysql/my.cnf
-v /usr/local/mysql/logs:/usr/local/mysql/logs:將主機當前目錄下的logs目錄掛載到容器的/logs
-v /usr/local/mysql/data:/usr/local/mysql/logs:將主機當前目錄下的data目錄掛載到容器的/usr/local/mysql/logs
-e mysql_root_password=root:初始化root使用者的密碼
Docker簡單實踐(一)
docker是乙個輕量級的作業系統虛擬化解決方案,在作業系統層實現虛擬化。docker和常規的虛擬化方案對比 1,基於作業系統核心級的虛擬化,效率高,資源利用率高,一台機器上可以執行數千個docker容器,秒級啟動,占用儲存少。2,適用於敏捷開發,提供更快的交付 部署,操作簡單高效,降低運維成本,為...
Docker 入門實踐
docker兩個最重要的概念是映象和容器。重要。容器 container 映象 images 倉庫 repository 除此之外,鏈結和資料卷也很 docker背後的想法是建立軟體程式可移植的輕量容器,讓其可以在任何安裝了docker的機器上執行,而不用關心底層作業系統,就像野心勃勃的造船者們成功...
Docker實踐記錄
docker run d name 容器名 v 主機指令碼所在目錄 容器對映目錄 w 容器對映目錄 映象 執行指令碼的指令 docker run 命令基本結構 docker run 引數 映象 命令 1.檢視所有記錄 docker logs 容器 2.檢視最近n條記錄 docker logs 容器 ...