轉自: http://m.oschina.net/blog/616526, 版權歸原作者所有。
1 Docker與虛擬機器
2 搭建過程
2.1 準備宿主系統
準備一個 CentOS 7作業系統,具體要求如下:
-
必須是 64 位作業系統
-
建議核心在 3.8 以上
通過以下命令檢視您的 CentOS 核心:
# uname -r
2.2 安裝Docker
# yum install docker
可使用以下命令,檢視 Docker 是否安裝成功:
# docker version
若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:
# systemctl start docker.service
一旦 Docker 服務啟動完畢,就可以開始使用 Docker 了。
2.3 下載映象
以 CentOS 為例,下載一個 CentOS 的映象:
# docker pull centos:7.2.1511
下載完成後,使用命令檢視本地映象列表:
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos 7.2.1511 83ee614b834e 9 weeks ago 194.6 MB
2.4 啟動容器
容器是在映象的基礎上來執行的,一旦容器啟動了,我們就可以登入到容器中,安裝自己所需的軟體或應用程式。
使用以下命令即可啟動容器:
# docker run -i -t -v /root/software/:/mnt/software/ 83ee /bin/bash
命令包含以下三個部分:
docker run <相關引數> <映象 ID> <初始命令>
其中,相關引數包括:
-
-i:表示以“互動模式”執行容器
-
-t:表示容器啟動後會進入其命令列
-
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
本例中,所有安裝程式都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。
# pwd /root/software # ls apache-tomcat-7.0.67.tar.gz jdk1.7.0_79.tar.gz
初始命令表示一旦容器啟動,需要執行的命令,此時使用“/bin/bash”,表示啟動後直接進入bash shell。
2.5 安裝軟體
為了搭建 Java Web 執行環境,需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。本例中,選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。
2.5.1 安裝JDK
首先,解壓 JDK 程式包:
# tar -zxf /mnt/software/jdk1.7.0_79.tar.gz -C .
然後,移動 JDK 目錄:
# mv jdk1.7.0_79/ /opt/jdk/
2.5.2 安裝Tomcat
首先,解壓Tomcat程式包:
# tar -zxf /mnt/software/apache-tomcat-7.0.67.tar.gz -C .
然後,移動Tomcat目錄:
# mv apache-tomcat-7.0.67/ /opt/tomcat/
2.5.3 編寫執行指令碼
編寫一個執行指令碼,當啟動容器時,執行該指令碼,啟動 Tomcat。
首先,建立執行指令碼:
# touch /root/run.sh # vi /root/run.sh
然後,編輯指令碼內容如下:
#!/bin/bash export JAVA_HOME=/opt/jdk/ export PATH=$JAVA_HOME/bin:$PATH sh /opt/tomcat/bin/catalina.sh run
最後,為執行指令碼新增執行許可權:
# chmod u+x /root/run.sh
2.6 退出容器
當以上步驟全部完成後,可使用exit命令,退出容器。
隨後,可使用如下命令檢視正在執行的容器:
# docker ps
此時,應該看不到任何正在執行的程式,因為剛才已經使用exit命令退出的容器,此時容器處於停止狀態,可使用如下命令檢視所有容器:
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS 02bebc3f546a 83ee "/bin/bash" 12 minutes ago Exited (0) 7 seconds ago
記住以上CONTAINER ID(容器 ID),隨後將通過該容器,建立一個可執行 Tomcat 映象。
2.7 建立Tomcat映象
使用以下命令,根據某個“容器 ID”來建立一個新的“映象”:
# docker commit 02be mytomcat:1.0 65c88ec597e04812ec3b06b7749578bebcae3aa3d735b565ed25db6818d9d7f3 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mytomcat 1.0 65c88ec597e0 About a minute ago 514.4 MB docker.io/centos 7.2.1511 83ee614b834e 9 weeks ago 194.6 MB
該容器的ID是02be,所建立的映象名是“mytomcat:1.0”,隨後可使用映象來啟動Tomcat容器。
2.8 啟動Tomcat容器
首先,新建/root/webapps/ROOT目錄,並在該目錄下建立一個index.html檔案,檔案內容如下:
<html> <body> <h2>Hello World!</h2> </body> </html>
正如上面所描述的那樣,可以通過“映象名”或“映象 ID”來啟動容器,與上次啟動容器不同的是,現在不再進入容器的命令列,而是直接啟動容器內部的 Tomcat 服務。此時,需要使用以下命令:
# docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ --name mytomcat_1 mytomcat:1.0 /root/run.sh
其中,相關引數包括:
-
-d:表示以“守護模式”執行/root/run.sh指令碼,此時 Tomcat 控制檯不會出現在輸出終端上。
-
-p:表示宿主機與容器的埠對映,此時將容器內部的 8080 埠對映為宿主機的 58080 埠,這樣就向外界暴露了 58080 埠,可通過 Docker 網橋來訪問容器內部的 8080 埠了。
-
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
-
--name:表示容器名稱,用一個有意義的名稱命名即可。
在瀏覽器中,輸入宿主IP和埠號,即可訪問 Tomcat:
2.9 最終示意圖:
2.10 停止Tomcat容器
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS f23598b6544d mytomcat:1.0 "/root/run.sh" 6 minutes ago Up 6 minutes # docker stop f235
2.11 移除容器
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS f23598b6544d mytomcat:1.0 "/root/run.sh" 8 minutes ago Exited (137) # docker rm f235 f235 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS
2.12 移除映象
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mytomcat 1.0 65c88ec597e0 31 minutes ago 514.4 MB docker.io/centos 7.2.1511 83ee614b834e 9 weeks ago 194.6 MB # docker rmi 65c8 Untagged: mytomcat:1.0 Deleted: 65c88ec597e04812ec3b06b7749578bebcae3aa3d735b565ed25db6818d9d7f3 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos 7.2.1511 83ee614b834e 9 weeks ago 194.6 MB
PS:本文參考了大神博文:http://my.oschina.net/huangyong/blog/372491?fromerr=kHrZPM01,並在原文基礎上,進行了部分新增修改。