從零開始構建一個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 "yzzhouyalei@foxmail.com" #創建目錄 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將會得到以下結果
[root@localhost 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容器的運行狀態
[root@localhost 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命令
[root@localhost 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 [root@localhost docker]# docker start test-tomcat test-tomcat [root@localhost 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 [root@localhost docker]# docker stop test-tomcat test-tomcat [root@localhost 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
以上命令, 把一個容器從退出狀態->運行中->退出狀態
如何強制刪除一個運行中的容器?
[root@localhost 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 [root@localhost docker]# docker rm -f test-tomcat test-tomcat [root@localhost docker]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost docker]#
docker rm 命令刪除一個Exited狀態的容器, docker rm -f 強制刪除一個運行中的容器
到這里, 在centos7系統下構建docker鏡像文件已經成功
另 , 可以直接使用官方的tomcat鏡像 , 把自己的網站目錄映射到容器內部
docker run -d -p 80:8080 --name test-tomcat --privileged=true -v 宿主機目錄:/usr/local/tomcat/webapps/ tomcat:9
如需幫助可向我發起QQ聊天發起QQ聊天
友情贊助
如果您喜歡此文,感覺對您工作有幫助,預期領導會給您漲工資,不妨小額贊助一下,讓我有動力繼續努力。
贊助方式:打開支付寶App,使用“掃一掃”付款,付款碼見下圖,別忘了付款留言哦!

或使用微信, 不用加好友就能付款
