1. 程式人生 > >從零開始構建一個centos+jdk7+tomcat7的映象檔案 centos7系統下docker執行環境的搭建 準備centos基礎映象 docker pull centos 或者直接下載我準備

從零開始構建一個centos+jdk7+tomcat7的映象檔案 centos7系統下docker執行環境的搭建 準備centos基礎映象 docker pull centos 或者直接下載我準備

從零開始構建一個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映象檔案已經成功