從零開始構建一個centos+jdk7+tomcat7的映象檔案 centos7系統下docker執行環境的搭建 準備centos基礎映象 docker pull centos 或者直接下載我準備
阿新 • • 發佈:2018-12-26
從零開始構建一個centos+jdk7+tomcat7的映象檔案
準備centos基礎映象
docker pull centos 或者直接下載我準備好的映象 docker pull registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1
準備jdk7和tomcat7安裝包
- 建立工作目錄, mkdir -p /z/docker
- 準備下載jdk7的tar.gz包http://download.oracle.com/otn/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
- 解壓到目錄/z/docker下, 並重命名為jdk
- 準備下載tomcat7的tar.gz包http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
- 解壓到目錄/z/docker下, 並重命名為tomcat
- 刪掉jdk資料夾下多餘檔案, 降低build的映象大小
rm -rf /z/docker/jdk/*src.zip \ /z/docker/jdk/lib/missioncontrol \ /z/docker/jdk/lib/visualvm \ /z/docker/jdk/lib/*javafx* \ /z/docker/jdk/jre/lib/plugin.jar \ /z/docker/jdk/jre/lib/ext/jfxrt.jar \ /z/docker/jdk/jre/bin/javaws \ /z/docker/jdk/jre/lib/javaws.jar \ /z/docker/jdk/jre/lib/desktop \ /z/docker/jdk/jre/plugin \ /z/docker/jdk/jre/lib/deploy* \ /z/docker/jdk/jre/lib/*javafx* \ /z/docker/jdk/jre/lib/*jfx* \ /z/docker/jdk/jre/lib/amd64/libdecora_sse.so \ /z/docker/jdk/jre/lib/amd64/libprism_*.so \ /z/docker/jdk/jre/lib/amd64/libfxplugins.so \ /z/docker/jdk/jre/lib/amd64/libglass.so \ /z/docker/jdk/jre/lib/amd64/libgstreamer-lite.so \ /z/docker/jdk/jre/lib/amd64/libjavafx*.so \ /z/docker/jdk/jre/lib/amd64/libjfx*.so
進入/z/docker目錄, 在當前目錄下建立Dockerfile檔案
cd /z/docker vi Dockerfile #插入以下內容 #使用的基礎映象 FROM registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1 #作者資訊 MAINTAINER yzzhouyalei "[email protected]" #建立目錄 RUN mkdir -p /z/java/jdk1.7.0_79 #把當前目錄下的jdk資料夾新增到映象 ADD jdk /z/java/jdk1.7.0_79 #建立tomcat目錄 RUN mkdir -p /z/java/apache-tomcat-7.0.70 #把當前目錄下的tomcat資料夾新增到映象 ADD tomcat /z/java/apache-tomcat-7.0.70 #新增環境變數 ENV JAVA_HOME /z/java/jdk1.7.0_79 ENV CATALINA_HOME /z/java/apache-tomcat-7.0.70 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin #暴露8080埠 EXPOSE 8080 #啟動時執行tomcat CMD ["/z/java/apache-tomcat-7.0.70/bin/catalina.sh","run"]
開始構建docker映象檔案
docker build -t repos_local/centos-jdk7-tomcat7:0.0.1 . -t 設定tag名稱, 命名規則registry/image:tag . 表示使用當前目錄下的Dockerfile檔案
等待構建完成, 不出意外的話, 執行docker images將會得到以下結果
[[email protected] docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE repos_local/centos-jdk7-tomcat7 0.0.1 2c5efe7056ce 4 minutes ago 511.7 MB
repos_local/centos-jdk7-tomcat7映象已經構建好了, 從這個映象啟動容器, 並配置好埠, 就能直接在瀏覽器上看到tomcat預設介面了
啟動centos-jdk7-tomcat7容器
docker run -d -p 8081:8080 --name test-tomcat repos_local/centos-jdk7-tomcat7:0.0.1 -d 後臺執行 -p 宿主機port:容器port 埠對映 --name 容器名稱, 可以通過容器名稱對容器操作
如果系統沒禁用防火牆的話, 可能需要開放8081埠
#直接執行命令, 開放埠號(重啟後可能失效)
iptables -A INPUT -ptcp --dport 8081 -j ACCEPT
##或者
#直接修改iptables, 重啟後不會失效
vi /etc/sysconfig/iptables
#插入以下內容
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
重啟iptables服務
service iptables restart
centos7下可以直接使用firewall-cmd來開放埠
#開放8081埠 permanent為永久開放 firewall-cmd --zone=public --add-port=8081/tcp --permanent #重新讀取配置 firewall-cmd --reload #檢視全部開放埠 firewall-cmd --list-all
如果提示FirewallD is not running
執行systemctl start firewalld.service, 啟動firewalld服務
直接在瀏覽器訪問centos7系統的8081埠, 已經能看到tomcat的預設介面了
檢視container容器的執行狀態
[[email protected] docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0.1 "/z/java/apache-tomca" 3 minutes ago Up 3 minutes 0.0.0.0:8081->8080/tcp test-tomcat
現在的容器狀態為Up, 執行中, 如何停止一個執行中的容器? 執行docker stop命令
[[email protected] docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0.1 "/z/java/apache-tomca" 47 hours ago Exited (143) 3 minutes ago test-tomcat [[email protected] docker]# docker start test-tomcat test-tomcat [[email protected] docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0.1 "/z/java/apache-tomca" 47 hours ago Up 3 seconds 0.0.0.0:8081->8080/tcp test-tomcat [[email protected] docker]# docker stop test-tomcat test-tomcat [[email protected] docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0.1 "/z/java/apache-tomca" 47 hours ago Exited (143) 4 seconds ago test-tomcat
以上命令, 把一個容器從退出狀態->執行中->退出狀態
如何強制刪除一個執行中的容器?
[[email protected] docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0.1 "/z/java/apache-tomca" 47 hours ago Up 5 seconds 0.0.0.0:8081->8080/tcp test-tomcat [[email protected] docker]# docker rm -f test-tomcat test-tomcat [[email protected] docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [[email protected] docker]#
docker rm 命令刪除一個Exited狀態的容器, docker rm -f 強制刪除一個執行中的容器
到這裡, 在centos7系統下構建docker映象檔案已經成功