Docker是一種新興的虛擬化技術,可以必定程度上的代替傳統虛擬機。下圖是容器跟虛擬機的對比mysql
對docker有個大體瞭解,學習docker斷斷續續,雖然說學習不能急於求成,但斷斷續續學的話,浪費的碎片化時間也是很多的。linux
學習docker若是不肯意看文章能夠看慕課網的一個免費的視頻講解,入門徹底ok。sql
能夠在docker hub上註冊個帳號,構建本身的鏡像放到hub上,以便複用docker
docker hub地址 數據庫
個人地址centos
慕課網學習地址安全
年前給公司的同事培訓過一次學習mysql,在阿里雲服務器上使用docker給每一個同事都搭建了一個msyql運行環境,差點沒跑起來,服務器
一個運行起來的空的mysql容器佔用了約200M內存,free -h命令能夠查看內存使用狀況網絡
慕課網手記 (培訓的資料準備筆記)工具
總結下使用docker搭建mysql實例的過程
個人是centos系統
查看linux版本能夠經過下面命令進行查看
cat /proc/version
安裝docker,參考 http://www.javashuo.com/article/p-cmjqztdu-hx.html
安裝mysql,能夠經過search命令查看倉庫的mysql的各個版本
docker search mysql
經過pull命令進行拉去鏡像操做,默認拉去的是latest版本,能夠經過冒號來下載指定版本,如想下載5.7的mysql
docker pull mysql:5.7
具體有哪些版本能夠查看hub,以下圖
如今下來後能夠經過 docker images 命令查看下載的鏡像
想運行mysql,把它放到容器裏面運行下就ok(貌似說的不咋合理)
運行直線須要作一些配置,好比數據庫data的存放位置,以及自定義的一些配置,好比mysql默認是區分大小寫的
我是在當前的用戶下面進行操做的,以下
建立一個data文件夾用於存放mysql的表結構,數據等信息
建立一個my.cnf文件來進行自定義參數設置,內容以下
[mysqld]
user=mysql sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION lower_case_table_names=1 event_scheduler=ON default-time-zone = '+8:00'
event_scheduler=ON 表示開啓事件支持
lower_case_table_names=1 表示數據庫不區分大小寫
default-time-zone = '+8:00' 表示使用中國時區
ok,準備就緒,啓動幹就完了。
具體命令
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name cmysql -v /home/chy/mysql/config/my.cnf:/etc/mysql/my.cnf -v /home/chy/mysql/db:/var/lib/mysql mysql:5.7
啓動成功以後會出現一個隨機字符串,表示容器的id
能夠經過docker ps查看,我是啓動了兩個。docker ps -a 查看全部容器
啓動以後,因爲進行了端口映射,能夠經過客戶端工具入sqlyog,Navicat均可以進行鏈接
若是想進入容器進行操做,能夠經過以下命令
要想退出使用exit,快捷鍵Ctrl+d
刪除容器能夠經過
docker rm cmysql
固然了,前提是容器須要關閉,關閉的命令
docker stop cmysql
同樣的道理,刪除鏡像也須要前提條件,那就是被依賴的容器刪除了才能進行刪除鏡像
docker rmi <image id>
ok,到位, 好記性不如爛筆頭,特此總結下。
Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口
鏡像(Image)
鏡像,從認識上簡單的來講,就是面向對象中的類,至關於一個模板。從本質上來講,鏡像至關於一個文件系統。Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如匿名卷、環境變量、用戶等)。鏡像不包含任何動態數據,其內容在構建以後也不會被改變。
容器(Container)
容器,從認識上來講,就是類建立的實例,就是依據鏡像這個模板建立出來的實體。容器的實質是進程,但與直接在宿主執行的進程不一樣,容器進程運行於屬於本身的獨立的命名空間。所以容器能夠擁有本身的root 文件系統、本身的網絡配置、本身的進程空間,甚至本身的用戶ID 空間。容器內的進程是運行在一個隔離的環境裏,使用起來,就好像是在一個獨立於宿主的系統下操做同樣。這種特性使得容器封裝的應用比直接在宿主運行更加安全。
倉庫(Repository)
倉庫,從認識上來講,就好像軟件包上傳下載站,有各類軟件的不一樣版本被上傳供用戶下載。鏡像構建完成後,能夠很容易的在當前宿主機上運行,可是,若是須要在其它服務器上使用這個鏡像,咱們就須要一個集中的存儲、分發鏡像的服務,Docker Registry 就是這樣的服務。