·Docker初識(shí)
1·背景說(shuō)明
·目前招投標(biāo)機(jī)器使用centos6系統(tǒng),方便操作本次試驗(yàn)使用centos7系統(tǒng)玖翅。
·Docker目前有如下兩個(gè)版本:COMMUNITY EDITION (社區(qū)版)和ENTERPRISE EDITION (企業(yè)版)先慷,作為學(xué)習(xí),選擇CE版本
·官方提供原汁原味的學(xué)習(xí)文檔(Docker官方文檔),不妨跳過(guò)此部分移步看看炸渡。
2·安裝
安裝yum-utils并設(shè)置Docker源
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
安裝Docker
yum install docker-ce -y
安裝完成之后瓶逃,Docker默認(rèn)是沒(méi)有開(kāi)啟的束铭,通過(guò)如下命令開(kāi)啟:
systemctl start docker
要是你想開(kāi)機(jī)自啟Docker,可以使用如下命令:
systemctl enable docker
3·測(cè)試一下Docker環(huán)境
查看docker版本信息
docker info
4·理解Docker容器運(yùn)行
運(yùn)行whalesay
docker run docker/whalesay cowsay boo
docker 表示docker程序 run表示啟動(dòng)容器命令厢绝,docker/whalesay為鏡像名稱(chēng)契沫。輸入該命令后,docker會(huì)首先在本地尋找docker/whalesay鏡像昔汉,如果本地找到鏡像會(huì)直接運(yùn)行懈万。否則會(huì)去Docker Hub (官方鏡像托管,類(lèi)似github)去尋找并下載至本地后運(yùn)行。docker/whalesay鏡像基于Ubuntu会通,但這并不影響我們?cè)贑entOS上運(yùn)行它口予。cowsay boo 是程序命令如同ifocnfig,cd 涕侈,/bin/bash沪停。
5·構(gòu)建鏡像
之前使用別人的鏡像,現(xiàn)在自己構(gòu)建鏡像裳涛。這里不是從零開(kāi)始木张,重在熟悉構(gòu)建過(guò)程。
分析:
例如我們經(jīng)常用到tomcat端三,tomcat運(yùn)行需要java程序窟哺,并且他們都跑在操作系統(tǒng)centos6上面。所以我們需要基本的操作系統(tǒng)鏡像技肩,然后基于系統(tǒng)安裝tomcat程序且轨。
Docker構(gòu)建需要Dockerfile的文件,該文件我們手動(dòng)創(chuàng)建虚婿,如下:
#開(kāi)頭大寫(xiě)單詞為Docker內(nèi)置命令旋奢,不做詳解
FROM centos:6.7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#基礎(chǔ)鏡像
ENV JAVA_HOME="/usr/java/jdk1.7.0_75" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設(shè)置系統(tǒng)有關(guān)tomcat環(huán)境變量,在一般操作系統(tǒng)中我們通過(guò)修改/etc/profile
ENV CLASS_PATH="$JAVA_HOME/lib:$JAVA_HOME/jre/lib"? #設(shè)置系統(tǒng)有關(guān)tomcat環(huán)境變量
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH #設(shè)置系統(tǒng)有關(guān)tomcat環(huán)境變量
ENV CATALINA_HOME="/usr/local/tomcat" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#設(shè)置系統(tǒng)有關(guān)tomcat環(huán)境變量
ENV TZ='Asia/Shanghai' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設(shè)置系統(tǒng)有關(guān)tomcat環(huán)境變量
WORKDIR /usr/local/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #設(shè)置當(dāng)前工作目錄
ADD jdk-7.75-1.x86_64.rpm /usr/local/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #上傳jdk包然痊,該包需要和Dockerfile文件處于同一目錄
RUN rpm -ivh jdk-7.75-1.x86_64.rpm &&? rm -rf jdk-7.75-1.x86_64.rpm ? #運(yùn)行命令
ADD tomcat /usr/local/tomcat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #上傳tomcat二進(jìn)制包
CMD [ "/usr/local/tomcat/bin/catalina.sh","run" ] ? ? ? ? ? ? ? ? ? ? ? ? ? #啟動(dòng)容器時(shí)默認(rèn)執(zhí)行命令
EXPOSE 8080 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#暴露8080端口
cd進(jìn)Dockerfile所在目錄進(jìn)行創(chuàng)建
docker ?build ? -t ? tomcat .
6·基本命令
啟動(dòng)toncat之前我們肯定已經(jīng)設(shè)置好server.xml 文件至朗,默認(rèn)的8080端口,默認(rèn)的代碼解析路徑/usr/local/tomcat/webapps等等剧浸。這些都在構(gòu)建鏡像的時(shí)候锹引,準(zhǔn)備好了。現(xiàn)在開(kāi)始運(yùn)行唆香。
docker run ?運(yùn)行空的tomcat
docker ? ?run ? -d ?-p {宿主機(jī)端口}:8080 --name test ?tomcat ?# -d 后臺(tái)運(yùn)行 ? -p 將容器端口映射到宿主機(jī) ?--name 給容器取名test
docker ps 查看容器狀態(tài)
現(xiàn)在有疑問(wèn)了嫌变,平臺(tái)代碼怎么放進(jìn)去呢。我們可以通過(guò) -v 掛載的方式躬它,此種方式好處多多腾啥。
docker run -d -p 80800:8080 ?-v {代碼在宿主機(jī)上的絕對(duì)路徑}:/usr/local/tomcat/webapps ?tomcat
docker exec ?登錄容器
我們登錄虛擬機(jī)一般通過(guò)SSH登錄服務(wù)器的22端口,顯然這樣登錄容器是件麻煩事冯吓。exec 命令解決這個(gè)問(wèn)題
docker exec -ti test /bin/bash
這樣我們即可登錄容器并運(yùn)行bash了倘待。 -ti 為標(biāo)準(zhǔn)輸出和輸入?yún)?shù)。
·平臺(tái)環(huán)境架構(gòu)簡(jiǎn)明
如下圖组贺,一個(gè)容器里面運(yùn)行一個(gè)任務(wù)凸舵。這樣我們可以將平臺(tái)的所有模塊移植到docker上來(lái)。注意在端口映射并配置文件上做好配置即可失尖。