搭建的基礎
- Linux: CentOS-7-x86_64-DVD-1810.iso
- Docker: docker-ce-18.03.1.ce
- Java: jdk-8u231-linux-x64.tar.gz
- Tomcat: apache-tomcat-8.5.50.tar.gz
安裝Docker
要搭建一個docker環境,必須要在服務器上先安裝docker,首先我們進行docker的安裝
Docker 要求 CentOS 系統的內核版本高於 3.10,首先需要查看一下自己的linux內核是否高於3.1,滿足要求在進行下面的操作
<code>uname -r /<code>
安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
<code>sudo yum install -y yum-utils device-mapper-persistent-data lvm2 /<code>
配置鏡像源,國外鏡像一般很難訪問,建議配置阿里雲鏡像
中央鏡像
<code>sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo /<code>
阿里鏡像
<code>sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo /<code>
查看下倉庫中有哪些鏡像,選擇自己需要的鏡像版本
<code>yum list docker-ce --showduplicates /<code>
這裡安裝最新的穩定版
<code>yum install docker-ce-18.03.1.ce /<code>
安裝好後查看下docker運行狀態
<code>systemctl status docker /<code>
如果沒有啟動docker,啟動一下
<code>systemctl start docker /<code>
也可以設置為docker開機自動啟動
<code>systemctl enable docker /<code>
拉取Docker官方centos鏡像
查詢 centos 相關的鏡像
<code>docker search centos /<code>
拉取docker鏡像
<code>docker pull 鏡像名 /<code>
因為我們是手工構建自己的docker CentOS鏡像,這裡我們拉取一個centos就可以了
查看下一下我們下載好的image
<code>docker images /<code>
通過Dockerfile 構建鏡像
- docker commit命令(這裡發佈的鏡像沒有記錄過程)
- docker build命令和Dockerfile文件(更為強大、靈活和常用,可以清晰的看到怎麼構建docker的步驟)
jdk和Tomcat就不通yum命令安裝,因為實際項目中進程有對應的版本,這裡我們上傳我們已經下載好了的版本到服務器上,首先在服務器上指定的目錄創建dockerfile文件夾,把jdk和Tomcat上傳到這個文件夾
<code># cd /home/ # mkdir dockerFile /<code>
解壓兩個文件
<code># tar -zxvf apache-tomcat-8.5.50.tar.gz # tar -zxvf jdk-8u231-linux-x64.tar.gz /<code>
在目錄下創建Dockerfile文件,然後vim書寫
<code>touch Dockerfile /<code>
Dockerfile 一些基本語法
- FROM : 指定基礎鏡像,並且必須是第一條指令
- MAINTAINER : 指定作者
- RUN : 運行指定的命令
- ADD : 複製命令,把文件複製到鏡像中,ADD會對壓縮文件(tar, gzip, bzip2, etc)做提取和解壓操作
- COPY : 將主機的文件複製到鏡像內,如果目的位置不存在,Docker會自動創建所有需要的目錄結構,但是它只是單純的複製,並不會去做文件提取和解壓工作
- ENV : 設置環境變量
- EXPOSE : 功能為暴漏容器運行時的監聽端口給外部
- CMD : 指定容器啟動時運行的命令
- ENTRYPOINT : 容器啟動時執行的命令
- WORKDIR : 在構建鏡像時,指定鏡像的工作目錄,之後的命令都是基於此工作目錄,如果不存在,則會創建目錄
注意:CMD的命令會被 docker run 的命令覆蓋而ENTRYPOINT不會
Dockerfile 腳本
<code>#指定操作的鏡像 FROM centos # 維護者信息 MAINTAINER wangzhh # 執行命令:創建jdk存放目錄 mkdir -p 創建多級目錄 RUN mkdir -p /home/jdk # 執行命令:創建tomcat存放目錄 mkdir -p 創建多級目錄 RUN mkdir -p /home/tomcat #將宿主機的jdk和tomcat拷貝到鏡像文件上面創建的目錄下,這裡注意是相對目錄,DockerFile的相對文件的路徑,我這裡放置的是同級 COPY jdk1.8.0_231 /home/jdk/jdk1.8.0_231 COPY apache-tomcat-8.5.50 /home/tomcat/apache-tomcat-8.5.50 #設置環境變量 ENV JAVA_HOME=/home/jdk/jdk1.8.0_231 ENV JRE_HOME=$JAVA_HOME/jre ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH=/sbin:$JAVA_HOME/bin:$PATH #暴露8080端口 EXPOSE 8080 /<code>
執行Dockerfile構建Docker鏡像
<code>docker build -t wangzhh/jdk_tomcat:20200309 . /<code>
-t 設置tag名稱, 命名規則registry/image:tag(若不添加版本號,默認latest). 表示使用當前目錄下的Dockerfile文件,注意語句後面有一個點
如下,我們就基於centos的基礎鏡像構建了一個java+tomcat的鏡像
開放服務器8080端口
<code># firewall-cmd --zone=public --add-port=8080/tcp --permanent # systemctl restart firewalld.service # firewall-cmd --reload /<code>
加載鏡像測試一下
<code>docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat:20200309 /<code>
如果上面構建的時候沒有加:tag版本號 就是:20200309可以docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat啟動
進入docker
<code>docker exec -it ecs_docker /bin/bash /<code>
測試下java版本
啟動tomcat瀏覽器訪問下
到這裡搭建一個jdk+tomcat的images就結束了,我們也可以打包成tar,讓其他人直接使用
<code>docker save -o tar包的名字 鏡像名 /<code>
關鍵字: tar jdk Dockerfile