1. 程式人生 > >CentOS7下使用docker,完成Jenkins映象、tomcat映象製作和啟動

CentOS7下使用docker,完成Jenkins映象、tomcat映象製作和啟動

最終的目的,是為了完成docker環境的Jenkins搭建使用,並從gitlab上獲取程式碼,打出war包,war包通過目錄掛載的方式,在tomcat容器中使用,總體思路如下

一、CentOS7下使用Docker

首先確保已經執行了yum源切換到阿里雲,參考上一節內容

1.解除安裝已經安裝的docker

yum list installed | grep docker

yum -y remove docker-engine.x86_64(根據上一步結果解除安裝)

2.安裝Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# step 1: 安裝必要的一些系統工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Step 2: 新增軟體源資訊

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# Step 3: 更新並安裝 Docker-CE

sudo yum makecache fast

sudo yum -y install docker-ce

# Step 4: 開啟Docker服務

sudo service docker start

docker version

3.映象搜尋

如果直接使用docker pull,預設是從官方映象走,速度也還行,但是國內也有兩家可以使用,阿里雲和網易雲,如下:

阿里雲

網易雲-映象中心

官方Dockerhub

比如在阿里雲上面搜尋centos,可以搜尋到如下

可以直接執行,pull這個映象

docker pull registry.cn-hangzhou.aliyuncs.com/centos7-lnmp/centos7-lnmp

啟動映象docker run –it imageid

4.容器修改後提交為映象(目前很少用到,可忽略)

在宿主機器上執行docker ps,檢視正在執行的映象例項

執行docker commit d5e2 centos7sshd,即可提交一個映象並命名為centos7sshd,即可將容器內的修改提交為一個新的映象,可以用此製作其他容器。

5.建立支援SSH服務的CentOS映象(目前很少用到,可忽略)

l  啟動sshd服務

[[email protected] /]# yum install passwd openssl openssh-server -y

啟動sshd:

# /usr/sbin/sshd -D

這時報以下錯誤:

[[email protected] b5926410fe60 /]# /usr/sbin/sshd

Could not load host key: /etc/ssh/ssh_host_rsa_key

Could not load host key: /etc/ssh/ssh_host_ecdsa_key

Could not load host key: /etc/ssh/ssh_host_ed25519_key

執行以下命令解決:

[[email protected] /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''

[[email protected] /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''

[[email protected] /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''

然後,修改 /etc/ssh/sshd_config 配置資訊:

UsePAM yes 改為 UsePAM no

UsePrivilegeSeparation sandbox 改為 UsePrivilegeSeparation no

[[email protected] /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config

[[email protected] /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

修改完後,重新啟動sshd

[[email protected] /]# /usr/sbin/sshd –D

l  修改root密碼,執行passwd修改即可

l  Commit此容器修改(參考上一節內容)

l  啟動新的映象

docker run -it -p 10022:22 80d  /usr/sbin/sshd –D

l  在宿主機器上登陸

ssh [email protected] -p 10022

6.通過Dockerfile建立tomcat7容器(基於ubuntu映象)

1)通過dockerfile,add war包、jdk方式製作映象

所需內容,可以從CSDN下載:https://download.csdn.net/download/sdfiiiiii/10693805

使用dockerfile製作映象。整體思路是:先要準備好apache-tomcat-8.0.53.tar.gz、jdk-8u144-linux-x64.tar.gz、demo.war(用於試驗的war包,事先準備好),用網易雲的ubuntu14.04映象為基礎,將tomcat、jdk和war包add到映象中,並最後在容器啟動的時候執行run.sh用於啟動tomcat。

建立tomcat8-jdk目錄,並按下圖放好檔案。

vim Dockerfile

FROM hub.c.163.com/library/ubuntu:14.04

MAINTAINER liukun <[email protected]>

# now add java and tomcat support in the container

ADD jdk-8u144-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-8.0.53.tar.gz /usr/local/

# configuration of java and tomcat ENV

ENV JAVA_HOME /usr/local/jdk1.8.0_144

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.53

ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.53

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# container listener port

EXPOSE 8080

# ADD war into tomcat under webapps directory

ADD demo.war /usr/local/apache-tomcat-8.0.53/webapps

ADD run.sh /usr/local/

ENTRYPOINT ["/usr/local/run.sh"]

run.sh檔案內容(此檔案需要設定執行許可權)

#!/bin/bash

/usr/local/apache-tomcat-8.0.53/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.53/logs/catalina.out

2)構建映象build

docker build -t tomcat8-jdk1.8-ubuntu14.04:1.0.0 .

注意最後有一個“.”

3)啟動容器docker run(使用-v掛載主機目錄,將tomcat日誌輸出到宿主機)

將主機上的/usr/local/tomcat/logs目錄掛載到容器的/usr/local/apache-tomcat-8.0.53/logs目錄(容器中的日誌將會寫回到宿主機上;--privileged=true要加,否則會報Permission denied,這個引數位置也不能放到最後)

docker run –itd  -p 8080:8080 -v /usr/local/tomcat/logs:/usr/local/apache-tomcat-8.0.53/logs --privileged=true tomcat8-jdk1.8-ubuntu14.04:1.0.0

4)訪問tomcat

瀏覽器訪問http://192.168.74.154:8080/demo/sample

5)也可以通過-v掛載目錄的方式,將war包目錄在docker run的時候對映到容器的webapps目錄下,啟動容器即可

Dockerfile內容

FROM hub.c.163.com/library/ubuntu:14.04

MAINTAINER liukun <[email protected]>

# now add java and tomcat support in the container

ADD jdk-8u144-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-8.0.53.tar.gz /usr/local/

# configuration of java and tomcat ENV

ENV JAVA_HOME /usr/local/jdk1.8.0_144

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-8.0.53

ENV CATALINA_BASE /usr/local/apache-tomcat-8.0.53

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# container listener port

EXPOSE 8080

ADD run.sh /usr/local/

ENTRYPOINT ["/usr/local/run.sh"]

run.sh內容:

#!/bin/bash

/usr/local/apache-tomcat-8.0.53/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0.53/logs/catalina.out

Build映象:

docker build -t tomcat-war-out:1.0.0 .

啟動容器

docker run -it -p 8080:8080 -v /usr/local/tomcat/logs:/usr/local/apache-tomcat-8.0.53/logs -v /home/liukun/tomcat/webapps:/usr/local/apache-tomcat-8.0.53/webapps --privileged=true tomcat-war-out:1.0.0

注意:-p引數不能放在最後,否則啟動是ok的,但是不能訪問

6)其他常用命令

docker rm -f $(docker ps -a |  grep "tomcat*"  | awk '{print $1}')

批量刪除無用的映象(映象名包含關鍵字)

docker rmi --force `docker images | grep doss-api | awk '{print $3}'`    //其中doss-api為關鍵字

7.整合Jenkins進行打包釋出流程

整體思路:使用Jenkins容器打包,scp war包到tomcat容器宿主機,掛載war包目錄到tomcat容器中,並重啟tomcat容器

分解動作:

l  Jenkins是一個docker容器,拉取程式碼並打war包(step1)

l  war包scp到目標tomcat所在宿主機上,通過指令碼scp到目標主機(step2)

l  server.xml預先生成好,做成共享目錄,掛載到容器conf目錄(step3)

l  war包目錄掛載到容器裡面(step4)

l  啟動/重啟容器(step5)

8.Jenkins using docker

對應上面的step1:目標:搭建Jenkins的docker環境,並從git上拉取程式碼並打出war包

需要準備的環境jdk1.8+tomcat8+jenkins2.138.1war包+maven3.5.0

l  所需內容,可以從CSDN下載:https://download.csdn.net/download/sdfiiiiii/10693920

l  不直接選用Jenkins映象,否則安裝完成之後,會有一些Jenkins外掛找不到;下載2.138.1版本Jenkins的war包,通過tomcat8+jdk1.8+Ubuntu14.04安裝

1)準備好的目錄結構如下

2)構建映象build

docker build -t jenkins-tomcat:1.0.0 .

3)啟動容器docker run

sudo docker run -it -p 8080:8080 -p 50000:50000 --name jenkins3 --privileged=true-v /home/liukun/jenkins:/var/jenkins_home -v /root/.jenkins:/root/.jenkins jenkins-tomcat:1.0.0

4)訪問Jenkins並完成配置

l  通過docker exec –it jenkins3 /bin/bash進入到容器中,檢視檔案/root/.jenkins/secrets/initialAdminPassword內容,來獲取admin密碼

l  安裝完成Jenkins,如果專案是maven+gitlab專案,那麼需要安裝maven外掛和gitlab外掛;進行“系統管理->外掛管理->可選外掛”勾選Maven Integration和gitlab兩個外掛進行安裝

l  Ubuntu軟體源加速(用於安裝git和maven)

由於預設的軟體安裝源速度較慢,需要切換到國內源

先執行apt-get install apt-transport-https

l  由於映象中沒有加入git,所以需要通過apt-get install git進行安裝

l  Maven通過掛載目錄的方式使用

Ø  /home/liukun/jenkins:/var/jenkins_home,將maven包放在宿主機的/home/liukun/jenkins,即可在容器內/var/jenkins_home訪問並使用

Ø  Jenkins啟動之後需要配置maven所在目錄

在“系統管理->全域性工具配置”找到MAVEN;裡面的目錄,是我們通過目錄掛載到容器裡面的,可以直接使用,maven的settings.xml中,mirror配置到阿里雲


l  Jenkins構建專案的時候報錯,需要高版本jdk支援

高版本的Jenkins需要至少使用jdk1.8,所以在“系統管理->全域性工具配置”找到JDK並按如下配置(jdk已經通過docker run命令掛載到了容器中)

重新構建即可

l  Jenkins的專案構建引數如下

至此,Jenkins using docker完成,可以通過gitlab打出war包

後續step2、3、4、5,其實均已通過上述內容分步驟有所體現。

相關推薦

CentOS7使用docker完成Jenkins映象tomcat映象製作啟動

最終的目的,是為了完成docker環境的Jenkins搭建使用,並從gitlab上獲取程式碼,打出war包,war包通過目錄掛載的方式,在tomcat容器中使用,總體思路如下 一、CentOS7下使用Docker 首先確保已經執行了yum源切換到阿里雲,參考上一節

CentOS7安裝Docker執行Nginx映象Centos映象

1、環境,CentOS7 Minimal 64位,Docker必須要64位的系統 2、通過yum命令直接安裝,yum install docker 3、啟動Docker,並將其設定為開機啟動 (1)啟動,systemctl start docker.service (2)開機啟動,systemctl en

關於CentOS7docker-ce無法刪除映象的問題

從舊版的docker刪除後安裝了新版的docker-ce 發現之前映象無法刪除,並且重新pull不能覆蓋,會出現兩個一模一樣的映象。 百度查也沒有查到類似的方法。 [[email protected] ~]# docker images REPOSITORY   

CentOS7 Docker安裝啟動

1、檢查系統核心       Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的CentOS 版本是否支援 Docker 。 通過uname -r 命令檢視你當前的核心版本。 [[email protected

centos7docker啟動失敗--ob for docker.service failed because the control process exited with error code.

今天在配置openshift用docker部署映象的時候,啟動docker發現竟然啟動失敗:     之前是可以啟動的,突然不能啟動了,想到我改了配置檔案: 執行: vim /etc/sysconfig/docker 可能是家的內容有問題

Linux(CentOS7)Docker的安裝與卸載

yum安裝 span col 存儲 target entos 軟件包 docker-ce 啟動 既然你在看這篇博客,那就說明你已經知道Docker是什麽了,那麽我也就不再復制粘貼那些官話套話了,下面直接開幹。Linux(CentOS7)環境下Docker的安裝與卸載。 原文

Centos7docker安裝mysql5.7

第一次使用docker安裝軟體,在此記錄一下安裝過程   1. DockerHub檢視mysql的版本號:DockerHub   2. 拉取mysql官方映象: #docker pull mysql:5.7   3. 建立mysql的相

新兵實戰搭建CentOS7docker+springboot專案+nginx反向代理 (三)

新兵實戰搭建CentOS7下docker+springboot專案+nginx反向代理 接下來開始部署springboot專案。 把打包好的spingboot jar包檔案通過securexftp 工具上傳到任意資料夾下,構建docker 映象。 mvn package docker

新兵實戰搭建CentOS7docker+springboot專案+nginx反向代理 (二)

新兵實戰搭建CentOS7下docker+springboot專案+nginx反向代理 接下來開始搭建開發基礎的虛擬機器環境。這裡使用的是wmware station 在centos官網下載最新版的資料 選擇完整版安裝映象。安裝時選擇開發環境安裝 ,網路勾選上,安裝完畢後開啟命令列,輸入

新兵實戰搭建CentOS7docker+springboot專案+nginx反向代理(一)

新兵實戰搭建CentOS7下docker+springboot專案+nginx反向代理 工作之餘把之前學的串起來 後面把前端也加進來 形成一個體系,對未來開發可以作為參考 1.Springboot打包 網上快速搭建一個springboot的教程很多這裡省略。測試本地環境可以執行成

MySQL5.7在CentOS7安裝配置調優

1、解除安裝系統自帶的 mariadb-lib [[email protected] ~]# rpm -qa | grep mariadb  mariadb-libs-5.5.44-2.el7.centos.x86_64  [[email protecte

[Docker]CentOS7Docker安裝教程

想要倒騰Kubernetes的話,第一步就是要會安裝Docker,這篇文章講一講過程 安裝步驟 檢查核心版本,必須是3.10以上 uname -r 安裝Docker yum -y install docker 啟

Docker映象容器的理解使用方法

零、應用背景 先看下面2個問題: 1. 單機多系統。如:windows上跑linux、VPS服務、PaSS服務。 windows上跑linux,一般用VM技術實現。 VPS提供商需要將一臺機器劃分成多

centos7docker安裝showdoc介面管理工具

1,安裝dockeryum install docker啟動dockersystemctl start docker.servicesystemctl enable docker.service2,下載showdoc官方程式碼:新建一個目錄儲存下下來的程式碼mkdir s

【Spring+SpringMVC+Mybatis】利用SSM整合完成使用者登入註冊修改密碼系統

近年來,由於Struts2+Hibernate3+Spring3,這套SSH框架,Struts2屢次爆出安全漏洞,Hibernate就只會推行它HQL那套而越來越遠離SQL查詢關係資料庫的本質,所以Spring+SpringMVC+Mybatis這套SSM框架悄然興起,現階

centos7jdkmysqltomcat的安裝以及web專案的部署過程

web專案在linux下執行是比較穩定的 概述:之前做了一個基於Spring+springmvc+hibernate的專案,最近想在linux下執行一下看看有沒有什麼問題,所以就自己動手安裝了linux其中的一個發行版centos來做測試:其中牽扯到linux下jdk,mysql,tomcat的

centos7docker的倉庫改為aliyun的映象倉庫

2.註冊賬號,點選自己的管理中心3.然後進入映象庫可以看到自己專有的映象地址4.使用命令 vi /etc/docker/daemon.json新增如下{ "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"] }

centos7xgboostpython安裝

git clone --recursive https://github.com/dmlc/xgboost cd xgboost make -j4 cd python-package sudo pyth

CentOS7docker服務無法啟動的一般檢查

檢查步驟 啟動docker服務: systemctl restart docker 這個時候會報錯,請進行以下步驟: 1. 找到報錯的型別,或者報錯的說明。 2. 檢查docker的配置檔案 3. 檢查磁碟空間 4. 檢查端口占用情況 步驟詳

CentOS7Docker與.net Core 2.2

tar 更新 ast dll roo 意思 ror round localhost 原文:CentOS7下Docker與.net Core 2.2一、使用 yum 安裝(CentOS 7下)    Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁