MySQL與容器

最近常常被問到,MySQL能夠適用於容器嗎?在這一篇裏,簡單地爲你們介紹一下MySQL在容器上的使用。
html

既然說到了容器,首先介紹一下關於容器的相關內容。
mysql

什麼是容器?讓咱們看一下官網上怎麼說,https://www.docker.com/resources/what-containerlinux

「A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.」nginx

翻譯過來的內容是「容器是軟件的標準單元,它將代碼及其全部依賴項打包,以便應用程序在不一樣的計算環境之間快速可靠地運行。Docker容器映像是一個輕量級的、獨立的、可執行的軟件包,它包括運行應用程序所需的一切:代碼、運行時、系統工具、系統庫和設置」。概述一下,用紅顏色標識出來的字即是容器的特徵。容器和虛擬機具備相似的資源隔離和分配優點,但功能不一樣,容器虛擬化的是操做系統而不是硬件。容器更輕便,更高效。Docker是實現容器技術的一個開源項目,它將程序以及程序全部的依賴都打包到Docker容器裏面。使用Docker的好處之一,能夠避免「明明在我這裏好用,爲何在你那裏很差用」,這個畫面開發的小夥伴和測試的小夥伴能夠腦補一下。git

使用Docker時,須要用到Docker鏡像。鏡像能夠從正式的鏡像庫下載,也能夠人工製做和更新。github

MySQL的鏡像能夠從 https://hub.docker.com/下載,這裏面既有社區版MySQL的鏡像,也有企業版MySQL的鏡像。另外,也能夠從https://container-registry.oracle.com下載兩個版本。sql

部署MySQL時,能夠參照下面的步驟:docker

  1. 安裝Docker服務。
    bash

  2. 下載Docker鏡像:服務器

    docker pull mysql
  3. 啓動Docker容器:

    docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -e MYSQL_ONETIME_PASSWORD=true -d mysql:latest
  4. 查看運行的容器:

    docker ps
  5. 查看日誌,確認生成的root密碼:

    docker logs mysqlse
  6. 鏈接MySQL服務器:

    docker exec -it mysqlse mysql -uroot -p
  7. 將配置文件和數據目錄從底層主機系統映射到容器:

    docker run --name=mysqlse -e MYSQL_RANDOM_ROOT_PASSWORD=true -v [path on host machine]/my.cnf:/etc/my.cnf -v [path on host machine]/datadir:/var/lib/mysql -d mysql:latest

關於詳細的安裝方法能夠參照:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-docker.html


讓咱們考慮下一個問題,若是使用了成百上千的容器,該怎樣管理呢?咱們須要一個管理系統來幫助建立和部署複雜的環境。如今有不少這樣的項目幫助咱們實現這一點,例如:Kubernetes,Swarm, Rancher, Docker Compose,...。

以Kubernetes爲例,Kubernetes是一個開源項目,容許將容器化的應用程序部署到集羣,而且可以控制它們。Kubernetes是最活躍的容器編排項目,它使用客戶端服務器(C/S)的架構,可以用於包括Docker在內的容器。

簡單介紹一下Kubernetes的幾個概念:

  • Node:容器運行的地方

  • Pods:共享存儲和網絡的一組容器

  • 高可用:當Node或Pod不可用時,Kubernetes將Pod安置到其餘可用的Node

  • 可以直接下載Docker鏡像

  • 資源控制包括網絡和存儲

  • 能夠和其餘項目整合提供存儲網絡等

MySQL提供了一個用於Kubernetes的 MySQLOperator for Kubernetes,目前仍是一個實驗室版本,它能夠安裝在現有的Kubernetes集羣內,用戶可以使用簡單的配置格式建立和管理MySQL集羣。這個項目一開始是爲了幫助內部團隊更容易地在Kubernetes中運行MySQL,但很快就發現不少其餘用戶可能也面臨着相似的問題,所以也將其開源提供給廣大用戶使用。https://github.com/oracle/mysql-operator

MySQL Operator for Kubernetes能夠部署社區版和企業版的MySQL,能夠配置管理InnoDB Cluster,當InnoDB Cluster的成員宕機時,MySQL Operator能夠自動將其從新加入集羣。此外,MySQL Operator還支持備份與恢復。

關於MySQL Operator的詳細內容能夠參考:https://blogs.oracle.com/developers/introducing-the-oracle-mysql-operator-for-kubernetes

以上內容是關於MySQL與容器的簡介,感謝您關注「MySQL解決方案工程師」!


本文分享自微信公衆號 - MySQL解決方案工程師(mysqlse)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索