搭建的基礎(chǔ)
- 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環(huán)境,必須要在服務(wù)器上先安裝docker纠拔,首先我們進行docker的安裝
Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10知市,首先需要查看一下自己的linux內(nèi)核是否高于3.1碎节,滿足要求在進行下面的操作
uname -r
安裝需要的軟件包计福, yum-util 提供yum-config-manager功能砰琢,另外兩個是devicemapper驅(qū)動依賴的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
配置鏡像源厦酬,國外鏡像一般很難訪問融撞,建議配置阿里云鏡像
中央鏡像
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
阿里鏡像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看下倉庫中有哪些鏡像勉耀,選擇自己需要的鏡像版本
yum list docker-ce --showduplicates
這里安裝最新的穩(wěn)定版
yum install docker-ce-18.03.1.ce
安裝好后查看下docker運行狀態(tài)
systemctl status docker
如果沒有啟動docker指煎,啟動一下
systemctl start docker
也可以設(shè)置為docker開機自動啟動
systemctl enable docker
拉取Docker官方centos鏡像
查詢 centos 相關(guān)的鏡像
docker search centos
拉取docker鏡像
docker pull 鏡像名
因為我們是手工構(gòu)建自己的docker CentOS鏡像,這里我們拉取一個centos就可以了
查看下一下我們下載好的image
docker images
通過Dockerfile 構(gòu)建鏡像
- docker commit命令(這里發(fā)布的鏡像沒有記錄過程)
- docker build命令和Dockerfile文件(更為強大便斥、靈活和常用至壤,可以清晰的看到怎么構(gòu)建docker的步驟)
jdk和Tomcat就不通yum命令安裝,因為實際項目中進程有對應(yīng)的版本枢纠,這里我們上傳我們已經(jīng)下載好了的版本到服務(wù)器上像街,首先在服務(wù)器上指定的目錄創(chuàng)建dockerfile文件夾,把jdk和Tomcat上傳到這個文件夾
# cd /home/
# mkdir dockerFile
解壓兩個文件
# tar -zxvf apache-tomcat-8.5.50.tar.gz
# tar -zxvf jdk-8u231-linux-x64.tar.gz
在目錄下創(chuàng)建Dockerfile文件晋渺,然后vim書寫
touch Dockerfile
Dockerfile 一些基本語法
- FROM : 指定基礎(chǔ)鏡像镰绎,并且必須是第一條指令
- MAINTAINER : 指定作者
- RUN : 運行指定的命令
- ADD : 復(fù)制命令,把文件復(fù)制到鏡像中,ADD會對壓縮文件(tar, gzip, bzip2, etc)做提取和解壓操作
- COPY : 將主機的文件復(fù)制到鏡像內(nèi)些举,如果目的位置不存在跟狱,Docker會自動創(chuàng)建所有需要的目錄結(jié)構(gòu),但是它只是單純的復(fù)制户魏,并不會去做文件提取和解壓工作
- ENV : 設(shè)置環(huán)境變量
- EXPOSE : 功能為暴漏容器運行時的監(jiān)聽端口給外部
- CMD : 指定容器啟動時運行的命令
- ENTRYPOINT : 容器啟動時執(zhí)行的命令
- WORKDIR : 在構(gòu)建鏡像時驶臊,指定鏡像的工作目錄挪挤,之后的命令都是基于此工作目錄,如果不存在关翎,則會創(chuàng)建目錄
注意:CMD的命令會被 docker run 的命令覆蓋而ENTRYPOINT不會
Dockerfile 腳本
#指定操作的鏡像
FROM centos
# 維護者信息
MAINTAINER wangzhh
# 執(zhí)行命令:創(chuàng)建jdk存放目錄 mkdir -p 創(chuàng)建多級目錄
RUN mkdir -p /home/jdk
# 執(zhí)行命令:創(chuàng)建tomcat存放目錄 mkdir -p 創(chuàng)建多級目錄
RUN mkdir -p /home/tomcat
#將宿主機的jdk和tomcat拷貝到鏡像文件上面創(chuàng)建的目錄下扛门,這里注意是相對目錄,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
#設(shè)置環(huán)境變量
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
執(zhí)行Dockerfile構(gòu)建Docker鏡像
docker build -t wangzhh/jdk_tomcat:20200309 .
-t 設(shè)置tag名稱, 命名規(guī)則registry/image:tag(若不添加版本號,默認latest)
. 表示使用當前目錄下的Dockerfile文件论寨,注意語句后面有一個點
如下,我們就基于centos的基礎(chǔ)鏡像構(gòu)建了一個java+tomcat的鏡像
開放服務(wù)器8080端口
# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# systemctl restart firewalld.service
# firewall-cmd --reload
加載鏡像測試一下
docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat:20200309
如果上面構(gòu)建的時候沒有加:tag版本號 就是:20200309
可以docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat
啟動
Options | Mean |
---|---|
-i | 以交互模式運行容器爽茴,通常與 -t 同時使用 |
-t | 為容器重新分配一個偽輸入終端葬凳,通常與 -i 同時使用 |
-d | 后臺運行容器,并返回容器ID |
-p | 指定端口映射室奏,格式為:主機(宿主)端口:容器端口 |
進入docker
docker exec -it ecs_docker /bin/bash
測試下java版本
啟動tomcat瀏覽器訪問下
到這里搭建一個jdk+tomcat的images就結(jié)束了火焰,我們也可以打包成tar,讓其他人直接使用
docker save -o tar包的名字 鏡像名