因爲Docker僅在內核版本不低於2.6.32-431.el6.x86_64一下的版本上支持,因此,在安裝Docker前請首先確認Centos系統的內核版本。javascript
確認內核:java
[root@localhost ~]# uname -r 2.6.32-431.el6.x86_64
若是結果顯示如上,或者比這個版本高,則能夠繼續往下走,不然,請查閱如何升級centos系統內核的教程,此處再也不贅述。python
因爲不一樣的源安裝的Docker版本也不同,所以再此處,我使用了一下的源,,請分別執行下面的兩行命令:linux
[root@localhost ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
安裝Dockerweb
[root@localhost ~]# yum -y install docker-io
檢查Docker是否安裝成功:docker
[root@localhost ~]# docker version Client version: 1.7.1 Client API version: 1.19 Go version (client): go1.4.2 Git commit (client): 786b29d/1.7.1 OS/Arch (client): linux/amd64 Get http:///var/run/docker.sock/v1.19/version: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
啓Docker服務apache
[root@localhost ~]# service docker start
設置開機啓動centos
[root@localhost ~]# chkconfig docker on
首先,咱們須要去下載一個Docker鏡像,這個鏡像已經安裝了咱們所需的全部軟件的一個操做系統。咱們就拿centos鏡像來作演示,下載此鏡像能夠前往Docker官網下載,若是官網不能訪問,請去搜索引擎上搜索Docker鏡像,下面我提供一個國內鏡像網站:https://hub.tenxcloud.com ,在這個鏡像網站搜索centos,而後在出現的結果中選擇官方鏡像,點擊進去,複製鏡像URL,我使用的是阿里的鏡像,URL以下例子:docker pull index.tenxcloud.com/dockerxman/docker-centos瀏覽器
將上述Docker鏡像URL複製後拷貝到本地命令窗口中運行,便可下載此鏡像:tomcat
docker pull index.tenxcloud.com/dockerxman/docker-centos
等待命令運行下載完成後,就可使用以下命令查看本地鏡像列表:
docker images
看到以下信息,表示鏡像已經有了,接下來咱們就能夠啓動容器了。
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.cn/docker/centos centos6 25c5298b1a36 7 weeks ago 215.8 MB
只需使用如下命令便可啓動容器:
docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash
這條命令比較長,咱們稍微分解一下,其實包含如下三個部分:
docker run <相關參數> <鏡像 ID> <初始命令>
其中,相關參數包括:
-i:表示以「交互模式」運行容器
-t:表示容器啓動後會進入其命令行
-v:表示須要將本地哪一個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
假設咱們的全部安裝程序都放在了宿主機的/root/software/目錄下,如今須要將其掛載到容器的/mnt/software/目錄下。
須要說明的是,不必定要使用「鏡像 ID」,也可使用「倉庫名:標籤名」,例如:docker.cn/docker/centos:centos6。
爲了搭建 Java Web 運行環境,咱們須要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。咱們不妨選擇/opt/目錄做爲安裝目錄,首先須要經過cd /opt/命令進入該目錄。
安裝 JDK
首先,解壓 JDK 程序包:
tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -C .
而後,重命名 JDK 目錄:
mv jdk1.7.0_67/ jdk/
首先,解壓 Tomcat 程序包:
tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -C .
而後,重命名 Tomcat 目錄:
mv apache-tomcat-7.0.55/ tomcat/
首先,編輯.bashrc文件
vi ~/.bashrc
而後,在該文件末尾添加以下配置:
export JAVA_HOME=/opt/jdk export PATH=$PATH:$JAVA_HOME
最後,須要使用source命令,讓環境變量生效:
source ~/.bashrc
咱們須要編寫一個運行腳本,當啓動容器時,運行該腳本,啓動 Tomcat,具體過程以下:
首先,建立運行腳本:
vi /root/run.sh
而後,編輯腳本內容以下:
#!/bin/bash source ~/.bashrc sh /opt/tomcat/bin/catalina.sh run
注意:這裏必須先加載環境變量,而後使用 Tomcat 的運行腳原本啓動 Tomcat 服務。
最後,爲運行腳本添加執行權限:
chmod u+x /root/run.sh
退出容器
當以上步驟所有完成後,可以使用exit命令,退出容器。
隨後,可以使用以下命令查看正在運行的容器:
docker ps
此時,您應該看不到任何正在運行的程序,由於剛纔已經使用exit命令退出的容器,此時容器處於中止狀態,可以使用以下命令查看全部容器:
docker ps -a
輸出以下內容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 57c312bbaad1 docker.cn/docker/centos:centos6 "/bin/bash" 27 minutes ago Exited (0) 19 seconds ago naughty_goldstine
記住以上CONTAINER ID(容器 ID),隨後咱們將經過該容器,建立一個可運行 Java Web 的鏡像。
使用如下命令,根據某個「容器 ID」來建立一個新的「鏡像」:
docker commit 57c312bbaad1 huangyong/javaweb:0.1
該容器的 ID 是「57c312bbaad1」,所建立的鏡像名是「huangyong/javaweb:0.1」,隨後可以使用鏡像來啓動 Java Web 容器。
啓動 Java Web 容器
有必要首先使用docker images命令,查看當前全部的鏡像:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE huangyong/javaweb 0.1 fc826a4706af 38 seconds ago 562.8 MB docker.cn/docker/centos centos6 25c5298b1a36 7 weeks ago 215.8 MB
可見,此時已經看到了最新建立的鏡像「huangyong/javaweb:0.1」,其鏡像 ID 是「fc826a4706af」。正如上面所描述的那樣,咱們能夠經過「鏡像名」或「鏡像 ID」來啓動容器,與上次啓動容器不一樣的是,咱們如今再也不進入容器的命令行,而是直接啓動容器內部的 Tomcat 服務。此時,須要使用如下命令:
docker run -d -p 58080:8080 --name javaweb huangyong/javaweb:0.1 /root/run.sh
稍做解釋:
-d:表示以「守護模式」執行/root/run.sh腳本,此時 Tomcat 控制檯不會出如今輸出終端上。
-p:表示宿主機與容器的端口映射,此時將容器內部的 8080 端口映射爲宿主機的 58080 端口,這樣就向外界暴露了 58080 端口,可經過 Docker 網橋來訪問容器內部的 8080 端口了。
--name:表示容器名稱,用一個有意義的名稱命名便可。
關於 Docker 網橋的內容,須要補充說明一下。實際上 Docker 在宿主機與容器之間,搭建了一座網絡通訊的橋樑,咱們可經過宿主機 IP 地址與端口號來映射容器內部的 IP 地址與端口號,
在一系列參數後面的是「鏡像名」或「鏡像 ID」,怎麼方便就怎麼來。最後是「初始命令」,它是上面編寫的運行腳本,裏面封裝了加載環境變量並啓動 Tomcat 服務的命令。
當運行以上命令後,會當即輸出一長串「容器 ID」,咱們可經過docker ps命令來查看當前正在運行的容器。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 82f47923f926 huangyong/javaweb:0.1 "/root/run.sh" 4 seconds ago Up 3 seconds 0.0.0.0:58080->8080/tcp javaweb
在瀏覽器中,輸入如下地址,便可訪問 Tomcat 首頁:
http://192.168.65.132:58080/
注意:這裏使用的是宿主機的 IP 地址,與對外暴露的端口號 58080,它映射容器內部的端口號 8080。