使用docker快速搭建執行環境
最近在搭建虛擬機器上的執行環境,最開始是按照傳統方法一個一個安裝軟體,一大堆軟體裝下確實是挺費時間的。現在容器技術非常的火,於是就去看了一下docker,完全能夠滿足我的需求,省時省力, 何樂而不為?
什麼是docker?
簡單的說,Docker是一個基於程序容器(Processcontainer)的輕量級VM解決方案。大概的示意圖如下(左邊是傳統VM,右邊是docker):
傳統的虛擬機器是虛擬出硬體,然後在虛擬的硬體上安裝作業系統及各種上層應用。Docker則是共享作業系統,在作業系統上層虛擬出獨立的容器,每個容器是一個獨立的沙箱,擁有自己的檔案系統及執行時。
幾個docker常用的命令
查詢docker映象
$ docker search XXX
下載docker映象
docker pull XXX
下載後預設是放到了:/var/lib/docker
檢視已下載的docker映象
docker images
執行docker容器
docker run XXX
檢視正在執行的docker容器
docker ps
停止正在執行的容器
docker stop XXX
刪除容器
docker rm -f XXX
注意事項
容器的資料持久化
docker執行期間產生的資料是不會在寫映象裡面的,重新用此映象啟動新的容器就會初始化映象,會加一個全新的讀寫入層來儲存資料。因此,若使用docker來執行mysql等資料儲存類應用時,你需要使用 資料卷(Data volume)
你可以在docker run命令中使用 -v 標識來給容器內新增一個數據卷,例如:
docker run -v /data/var/mysql/:/var/lib/mysql mysql
此命令將本地目錄/data/var/mysql/掛載到了mysql的docker容器中,對應容器中的目錄/var/lib/mysql
容器的互動式操作
docker run -t -i ubuntu:14.04 /bin/bash
-t 在新容器內指定一個偽終端或終端,-i 允許我們對容器內的 (STDIN) 進行互動。最後的/bin/bash 是指定在容器中啟動bash shell
容器作為守護程序
docker run -d mysql
-d 標識告訴 docker 在容器內以後臺程序模式執行,預設返回一個字串(docker id),接著你可以使用 docker ps 命令來檢視已經啟動的docker容器
容器的埠對映
docker run -p 5506:3306 mysql
-p 標識會繫結本地主機上的指定埠,與容器內的埠建立對映關係。例如:上麥的例子將本機的5506與容器內mysql的3306建立對映,你可以使用 本機IP:5506 連線容器內的msyql