1 準備宿主系統(tǒng)
準備一個 CentOS 7操作系統(tǒng),具體要求如下:
必須是 64 位操作系統(tǒng)
建議內(nèi)核在 3.8 以上
通過以下命令查看您的 CentOS 內(nèi)核:
# uname -r
2 安裝Docker
# yum install docker
可使用以下命令,查看 Docker 是否安裝成功:
# docker version
若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:
# systemctl start docker.service
一旦 Docker 服務啟動完畢,就可以開始使用 Docker 了。
3 下載鏡像
以 CentOS 為例,下載一個 CentOS 的鏡像:
# docker pull centos
下載完成后,使用命令查看本地鏡像列表:
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest e934aafc2206 2 weeks ago 199MB
4 宿主機創(chuàng)建/root/software/目錄,并把安裝包放在該目錄下
5 啟動容器
容器是在鏡像的基礎(chǔ)上來運行的,一旦容器啟動了,我們就可以登錄到容器中,安裝自己所需的軟件或應用程序。
使用以下命令即可啟動容器:
# docker run -i -t -v /root/software/:/mnt/software/ e934 /bin/bash
命令包含以下三個部分:
docker run <相關(guān)參數(shù)> <鏡像 ID> <初始命令>
其中,相關(guān)參數(shù)包括:
-i:表示以“交互模式”運行容器
-t:表示容器啟動后會進入其命令行
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
本例中,所有安裝程序都放在了宿主機的/root/software/目錄下,現(xiàn)在需要將其掛載到容器的/mnt/software/目錄下。
# cd /mnt/software/
# pwd
/mnt/software
# ls
apache-tomcat-7.0.81.tar.gz jdk-8u121-linux-x64.tar.gz
初始命令表示一旦容器啟動,需要運行的命令,此時使用“/bin/bash”,表示啟動后直接進入bash shell。
6 安裝軟件
為了搭建 Java Web 運行環(huán)境,需要安裝 JDK 與 Tomcat,下面的過程均在容器內(nèi)部進行。本例中,選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。
6.1 安裝JDK
首先,解壓 JDK 程序包:
# tar -zxf /mnt/software/jdk-8u121-linux-x64.tar.gz -C .
然后,移動 JDK 目錄:
# mv jdk1.8.0_121/ /opt/jdk/
6.2 安裝Tomcat
首先,解壓Tomcat程序包:
# tar -zxf /mnt/software/apache-tomcat-7.0.81.tar.gz -C .
然后,移動Tomcat目錄:
# mv apache-tomcat-7.0.81/ /opt/tomcat/
6.3 編寫運行腳本
編寫一個運行腳本,當啟動容器時,運行該腳本,啟動 Tomcat。
首先,創(chuàng)建運行腳本:
# touch /root/run.sh
# vi /root/run.sh
然后,編輯腳本內(nèi)容如下:
#!/bin/bash
export JAVA_HOME=/opt/jdk/
export PATH=$JAVA_HOME/bin:$PATH
sh /opt/tomcat/bin/catalina.sh run
最后,為運行腳本添加執(zhí)行權(quán)限:
# chmod u+x /root/run.sh
7 退出容器
當以上步驟全部完成后,可使用exit命令,退出容器。
隨后,可使用如下命令查看正在運行的容器:
docker ps
此時,應該看不到任何正在運行的程序,因為剛才已經(jīng)使用exit命令退出的容器,此時容器處于停止狀態(tài),可使用如下命令查看所有容器:
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4e3a062ab05 e934 “/bin/bash” 38 minutes ago Exited (0) About a minute ago lucid_einstein
記住以上CONTAINER ID(容器 ID),隨后將通過該容器,創(chuàng)建一個可運行 Tomcat 鏡像。
8 創(chuàng)建Tomcat鏡像
使用以下命令,根據(jù)某個“容器 ID”來創(chuàng)建一個新的“鏡像”:
# docker commit d4e3 mytomcat:1.0
sha256:c5ef8dacbf3eead5ea2b9fc3c1050a395863c6db0abd0eb7d6dee8ed46a31ffd
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.0 c5ef8dacbf3e 18 seconds ago 583MB
centos latest e934aafc2206 2 weeks ago 199MB
該容器的ID是d4e3,所創(chuàng)建的鏡像名是“mytomcat:1.0”,隨后可使用鏡像來啟動Tomcat容器。
9 啟動Tomcat容器
首先,新建/root/webapps/ROOT目錄,
# cd /root
# mkdir webapps
# cd webapps/
# mkdir ROOT
# cd ROOT/
# vi index.html
并在該目錄下創(chuàng)建一個index.html文件,文件內(nèi)容如下:
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
正如上面所描述的那樣,可以通過“鏡像名”或“鏡像 ID”來啟動容器,與上次啟動容器不同的是,現(xiàn)在不再進入容器的命令行,而是直接啟動容器內(nèi)部的 Tomcat 服務。此時,需要使用以下命令:
# docker run -d -p 58080:8080 -v /root/webapps/:/opt/tomcat/webapps/ –name mytomcat_1 mytomcat:1.0 /root/run.sh
其中,相關(guān)參數(shù)包括:
-d:表示以“守護模式”執(zhí)行/root/run.sh腳本,此時 Tomcat 控制臺不會出現(xiàn)在輸出終端上。
-p:表示宿主機與容器的端口映射,此時將容器內(nèi)部的 8080 端口映射為宿主機的 58080 端口,這樣就向外界暴露了 58080 端口,可通過 Docker 網(wǎng)橋來訪問容器內(nèi)部的 8080 端口了。
-v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>
–name:表示容器名稱,用一個有意義的名稱命名即可。
在瀏覽器中,輸入宿主IP和端口號,即可訪問 Tomcat:
10 最終示意圖:
11 停止Tomcat容器
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54215923125b mytomcat:1.0 “/root/run.sh” 3 minutes ago Up 3 minutes 0.0.0.0:58080->8080/tcp mytomcat_1
# docker stop 5421
12 移除容器
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54215923125b mytomcat:1.0 “/root/run.sh” 3 minutes ago Exited (137) 2 seconds ago mytomcat_1
# docker rm 5421
5421
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13 移除鏡像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mytomcat 1.0 c5ef8dacbf3e 20 minutes ago 583MB
centos latest e934aafc2206 2 weeks ago 199MB
# docker rmi c5ef
Untagged: mytomcat:1.0
Untagged: mytomcat@sha256:d949cbb93a58de27eec4c911f27b9f09edeb3d3ce57cf5ce77d4745211c947f6
Deleted: sha256:c5ef8dacbf3e7ce916f57c52c16de3892c724996b5e30ca0d141c81897d9a06c
Deleted: sha256:7e62d1c2f904e8de3fadc6b01edea96bcb324634f0df514cc9297b1bf11d2f06
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest e934aafc2206 2 weeks ago 199MB
更多Docker相關(guān)教程見以下內(nèi)容:
Linux 下的 Docker ??裝與使用 http://www.sfodin.cn/Linux/2018-06/152996.htm
CentOS 7安裝Docker應用容器引擎 http://www.sfodin.cn/Linux/2018-06/152856.htm
CentOS 7.3環(huán)境安裝Docker 18.03 http://www.sfodin.cn/Linux/2018-05/152356.htm
使用Docker分分鐘啟動常用應用 http://www.sfodin.cn/Linux/2017-04/142649.htm
CentOS 7使用Docker搭建GitLab服務器 http://www.sfodin.cn/Linux/2018-04/151725.htm
30分鐘帶你了解Docker http://www.sfodin.cn/Linux/2018-08/153346.htm
Docker容器常見操作詳解 http://www.sfodin.cn/Linux/2018-08/153685.htm
Docker發(fā)布應用程序指南 http://www.sfodin.cn/Linux/2018-08/153405.htm