docker jenkins練習

自己搭的centos7的賬號密碼:misaka 123456

移除docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

安裝:
1 安裝必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2 添加軟件源信息
sudo yum-config-manager --add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3 更新yum緩存
sudo yum makecache fast
4 安裝docker ce
sudo yum -y install docker-ce
5 啓動
sudo systemctl start docker
6 測試
(sudo) docker run hello-world

7 使用國內鏡像
 /etc/docker/daemon.json
沒有sudo vi daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

命令:
docker ps (-a查看全部)查看容器
docker image 查看鏡像
docker start name/id 啓動容器
   restart stop 重啓、停止
docker attach name/id 、docker exec -ti name.id /bin/bash進入容器
docker run -t(-d後臺運行) -i name/id /bin/bash 運行鏡像
docker rm name/id 刪除容器
docker rmi imagename 刪除鏡像

docker login -u 用戶名 -p 密碼 登錄
docker tag ddfddf/tutorial 你的用戶名/tutorial  創建倉庫
docker push 你的用戶名/tutorial 推送
docker logout 退出

 

參考資料

介紹 https://blog.csdn.net/deng624796905/article/details/86493330

dockerfile https://blog.csdn.net/qq_33256688/article/details/80319673

 

 

一 使用dockerfile搞一個搭建jdk、jenkins、mvn環境鏡像的東西

1 按上述安裝docker

2 giao到jdk安裝包、jenkins.war、maven,在文件下放置jenkins.war,解壓的jdk文件夾,解壓的maven文件夾,Dockerfile

FROM centos
MAINTAINER misaka kagami
COPY jdk1.8.0_211 jdk1.8.0_211
COPY apache-maven-3.6.1 apache-maven-3.6.1
ADD jenkins.war jenkins.war

ENV JAVA_HOME=/jdk1.8.0_211
ENV M2_HOME=/apache-maven-3.6.1
ENV PATH=$JAVA_HOME/bin:$PATH:$M2_HOME/bin
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","/jenkins.war"]

3 編譯生成鏡像 docker build -t misaka/test .(最後有個點)

4 (可選)上傳鏡像 docker push 你的用戶名/tutorial 推送

5 創建容器、運行鏡像 docker run -d -p 192.168.0.105:8080:8080 --name websocket yaolin/websocket

 

二 giao一個svn鏡像

1 查一下docker search svn

2 拉取鏡像docker pull garethflowers/svn-server

3 運行鏡像 docker run --restart always --name svn -d -v /usr/svn/repo:/var/opt/svn -p 3690:3690 garethflowers/svn-server

配置svn:

1 進入容器 docker exec -it svn /bin/sh

2 創建倉庫svnadmin create 名字

3 cd進入倉庫文件,修改svnserve.conf、passwd、authz,如參考資料↓

參考資料: https://blog.csdn.net/l506945024/article/details/93057964

 

安裝jenkins 插件
Maven Integration
deploy to contain
publish over ssh

 

容器間找不到路由可以關閉防火牆

獲得root 控制權限。在“#”下操作。

查看防火牆狀態。 
systemctl status firewalld

臨時關閉防火牆命令。重啓電腦後,防火牆自動起來。 
systemctl stop firewalld

永久關閉防火牆命令。重啓後,防火牆不會自動啓動。 
systemctl disable firewalld

打開防火牆命令。 
systemctl enable firewalld

 

設置發佈

發佈位置放置jar包、app.sh

#!/bin/bash
## Author LinkinStar origin author
## UPDATE 2019-01-05
version="1.0.1";

appName=$2
if [ -z $appName ];then
    appName=`ls -t |grep .jar$ |head -n1`
fi

function start()
{
	count=`ps -ef |grep java|grep $appName|wc -l`
	if [ $count != 0 ];then
		echo "Maybe $appName is running, please check it..."
	else
		echo "The $appName is starting..."
		nohup java -jar ./$appName -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -Xms512M -Xmx4G > /dev/null 2>&1 &
	fi
}

function stop()
{
	appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ];then
	    echo "Maybe $appName not running, please check it..."
	else
        echo "The $appName is stopping..."
        kill $appId
	fi
}

function restart()
{
    # get release version
    releaseApp=`ls -t |grep .jar$ |head -n1`
    
    # get last version 
    lastVersionApp=`ls -t |grep .jar$ |head -n2 |tail -n1`

    appName=$lastVersionApp
    stop
    for i in {5..1}
    do
        echo -n "$i "
        sleep 1
    done
    echo 0
    
    backup
    
    appName=$releaseApp
    start
}

function backup() 
{
    # get backup version
    backupApp=`ls |grep -wv $releaseApp$ |grep .jar$`
    
    # create backup dir
    if [ ! -d "backup" ];then
        mkdir backup
    fi
    
    # backup
    for i in ${backupApp[@]}
    do
        echo "backup" $i
        mv $i backup
    done
}

function status()
{
    appId=`ps -ef |grep java|grep $appName|awk '{print $2}'`
	if [ -z $appId ] 
	then
	    echo -e "\033[31m Not running \033[0m" 
	else
	    echo -e "\033[32m Running [$appId] \033[0m" 
	fi
}


function usage()
{
    echo "Usage: $0 {start|stop|restart|status|stop -f}"
    echo "Example: $0 start"
    exit 1
}

case $1 in
	start)
	start;;

	stop)
	stop;;
	
	restart)
	restart;;
	
	status)
	status;;
	
	*)
	usage;;
esac

其餘設置參考 https://www.jianshu.com/p/d4f2953f3ce0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章