摘要:入坑嘿嘿安裝官方安裝教程常用命令用構建鏡像通過鏡像生成容器是交互式模式對應是后臺啟動用本機的端口映射容器的端口進入正在運行的容器內查看鏡像查看所有容器狀態刪除容器刪除鏡像重啟構建用官方鏡像啟動將存放數據庫信息的文件夾映射
Docker 入坑docker嘿嘿
ubantu安裝docker
官方安裝教程
docker常用命令
#用Dockerfile構建鏡像 docker build -t tomsun28/ubantu:6.0 . #通過docker鏡像生成docker容器 #-it是交互式模式(對應-d是后臺啟動) #-p 用本機的8080端口映射容器的80端口 docker run -it -p 8080:80 --name containerName tomsun28/ubantu:6.0 #進入正在運行的容器內 docker exec -it containerName /bin/bash docker images 查看鏡像 docker ps -a 查看所有容器狀態 docker rm 刪除容器 docker rmi 刪除鏡像 systemctl restart docker 重啟docker
docker 構建mariadb
#用官方鏡像啟動mariadb,將存放數據庫信息的文件夾/var/lib/mysql映射到本地 docker run -d -p 3306:3306 --restart=always --name mariadb -e TIMEZONE=Asia/Shanghai -v /mnt/dockerWorkspace/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=admin tomsun28/mariadb:1.0 #進入mariadb容器 docker exec -it mariadb /bin/bash #登錄數據庫 mysql -uroot -padmin
Dockerfile----基于Ubuntu基礎鏡像生成的Tomcat中間件鏡像
# VERSION 1.0.0 # 基礎鏡像為ubuntu:16.04 FROM ubuntu:16.04 MAINTAINER tomsun28ENV TOMCAT_VERSION 8.0.48 # 設置系統格式UTF8 ENV LANG=C.UTF-8 # 設置系統時區 shanghai ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 更新源前的操作 RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections RUN echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections # 更新APT源 安裝依賴,安裝 oracle jdk8,wget,unzip,tar RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common && add-apt-repository ppa:webupd8team/java && apt-get update && apt-get install -y --no-install-recommends oracle-java8-installer wget unzip tar && rm -rf /var/lib/apt/lists/* && rm -rf /var/cache/oracle-jdk8-installer # 設置JAVA_HOME環境變量 ENV JAVA_HOME /usr/lib/jvm/java-8-oracle # 安裝tomcat RUN wget --quiet --no-cookies http://apache.rediris.es/tomcat/tomcat-8/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz -O /tmp/tomcat.tgz && tar xzvf /tmp/tomcat.tgz -C /opt && mv /opt/apache-tomcat-${TOMCAT_VERSION} /opt/tomcat && rm /tmp/tomcat.tgz && rm -rf /opt/tomcat/webapps/examples && rm -rf /opt/tomcat/webapps/docs && rm -rf /opt/tomcat/webapps/ROOT # 配置tomcat user ADD tomcat-users.xml /opt/tomcat/conf/ # tomcat環境變量 ENV CATALINA_HOME /opt/tomcat ENV PATH $PATH:$CATALINA_HOME/bin # 暴露端口 EXPOSE 8080 EXPOSE 8009 # 工作目錄 WORKDIR /opt/tomcat # run 鏡像之后啟動tomcat CMD ["/opt/tomcat/bin/catalina.sh", "run"] ******************************* #tomcat配置文件 tomcat-users.xml ******************************* #build生成鏡像 docker build -t tomsun28/tomcat:1.1
Dockerfile----基于jenkins基礎鏡像生成容器內jenkins用戶運行docker的jenkins鏡像
*******************Dockerfile************* FROM jenkins:latest MAINTAINER tomsun28#安裝jenkins插件 USER jenkins COPY plugins.txt /usr/share/jenkins/plugins.txt RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/plugins.txt USER root ARG dockerGid=999 #將jenkins用戶放docker組,安裝gosu RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group && apt-get update && apt-get install -y gosu && apt-get install -y libltdl7 && rm -rf /var/lib/apt/list/* COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] *****************plugins.txt******************* git:latest *****************entrypoint.sh****************** #! /bin/bash set -e chown -R 1000 "$JENKINS_HOME" exec gosu jenkins /bin/tini -- /usr/local/bin/jenkins.sh *************build生成jenkins鏡像****************** 將三個文件放入同一目錄下執行: docker build -t tomsun28/jenkins:1.1 .
詳細代碼更多鏡像Dockerfile可見我的github tomsun28"s dockerfile
使用Docker持續集成與自動化部署自己用docker搭了一套項目開發的持續集成部署,在這個記錄下流程萬一又給忘了
#構建Docker私有倉庫 docker run -d --restart=always --name registry -v /opt/dockerWorkspace/registry:/tmp/registry -p 5000:5000 tomsun28/registry:1.0 #向倉庫推送鏡像 docker push 127.0.0.1:5000/tomcat:1.0 #向倉庫拉取鏡像 docker pull 127.0.0.1:5000/tomcat:1.0 #server gave HTTP response to HTTPS client問題 touch /etc/docker/daemon.json echo "{ "insecure-registries":["127.0.0.1:5000"] }" >> /etc/docker/daemon.json
#構建Jenkins(1.6低版本jenkins) docker run -d -p 8080:8080 --name jenkins --restart=always -v /opt/dockerWorkspace/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock tomsun28/jenkins:1.0 #參數/opt/dockerWorkspace/jenkins_home:/var/jenkins_home將目錄映射到本地磁盤 #參數/var/run/docker.sock:/var/run/docker.sock映射本地docker,這樣就能在jenkins容器使用docker 默認用戶密碼 admin/admin
#構建Jenkins(2.6新版本jenkins) docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --restart=always -v /opt/dockerWorkspace/jenkins_home:/var/jenkins_home -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock tomsun28/jenkins:1.1
小插曲:baidu云過期了轉便宜的jd云,在jd云下運行的jenkins容器提交表單服務器無響應,其他跳轉是好的,各種排查了一天哎,最后實在沒辦法提交issue給jd馬上回了是docker的MTU和它們云服務器MTU不一樣會導致有時docker網絡不通。。。。。。。。只想說日狗d了
Dockerfile tomcat項目所對應的tomcat鏡像構建Dockerfile,將此Dockerfile放在當前項目下,示例項目名為WebHelloWorld
#VERSION 1.0.0 #基礎鏡像為tomcat,從我搭建鏡像倉庫拉取tomcat鏡像 FROM tomsun28/tomcat:1.1 #簽名 MAINTAINER tomsun28 "tomsun28@outlook.com" #加入WAR包到tomcat下(1),官方tomcat鏡像的tomcat位置在/usr/local/tomcat RUN rm -rf /usr/local/tomcat/webapps ADD ./target/WebHelloWorld.war /usr/local/tomcat/webapps/WebHelloWorld.war #加入WAR包到tomcat下(2)自己的tomcat:1.1鏡像的tomcat位置在/opt/tomcat RUN rm -rf /opt/tomcat/webapps/WebHelloWorld* ADD ./target/WebHelloWorld.war /opt/tomcat/webapps/WebHelloWorld.war
Jenkins細節配置
配置->項目名稱:最好為github上代碼的項目名稱,必須小寫 配置->源碼管理->Git:URL為github上的項目clone url,下面默認master分支 配置->觸發遠程構建選上->身份證令牌:eg:hahaha 用戶->設置->查看API Token: userID=xxxx,apiToken=xxxx 這兩個github配置會用到
Jenkins配置構建步驟shell腳本
#!/bin/bash #build in jenkins sh #docker docker hub倉庫地址,之后把生成的鏡像上傳到 registry or docker hub REGISTRY_URL=127.0.0.1:5000 #docker login --username tomsun28 --password xxxx #根據時間生成版本號 TAG=$REGISTRY_URL/$JOB_NAME:`date +%y%m%d-%H-%M` #使用maven 鏡像進行編譯 打包出 war 文件 docker run --rm --name mvn -v /opt/dockerWorkspace/maven:/root/.m2 -v /opt/dockerWorkspace/jenkins_home/workspace/$JOB_NAME:/usr/src/mvn -w /usr/src/mvn/ tomsun28/maven:1.0 mvn clean install -Dmaven.test.skip=true #使用放在項目下面的Dockerfile打包生成鏡像 docker build -t $TAG $WORKSPACE/. docker push $TAG docker rmi $TAG #判斷之前運行的容器是否還在,在就刪除 if docker ps -a | grep -i $JOB_NAME;then docker rm -f $JOB_NAME fi #用最新版本的鏡像運行容器 docker run -d -p 80:8080 --name $JOB_NAME -v /opt/dockerWorkspace/tomcat/$JOB_NAME/logs:/opt/tomcat/logs $TAG
github配置
對應項目->settings->Webhooks->add webhook: Payload URL = http://userID:apiToken@182.61.59.000:8080/job/webhelloworld/build?token=hahaha userID,apiToken為上面Jenkins的userID,apiToken的值 182.61.59.000:8080為Jenkins的IP:端口 WebHelloWorld為Jenkins的項目名 hahaha為上面Jenkins設置的身份令牌
分享一波阿里云代金券快速上云
持續入坑
參考來自
使用Docker構建持續集成與自動部署的Docker集群
Running Docker in Jenkins (in Docker)
轉載請注明 from tomsun28
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27217.html
摘要:系統有兩個程序服務端和客戶端。其中服務端是一個服務進程,管理著所有的容器??蛻舳藙t扮演著服務端的遠程控制器,可以用來控制的服務端進程。守護進程會處理復雜繁重的任務,例如建立運行發布你的容器??蛻舳撕褪刈o進程之間通過或者進行通信。 預期學習目標 Docker基本概念 配置本地Docker環境 容器的生命周期與配置 端口映射和容器鏈接 利用volume保存持久化容器數據 檢查容器日志 監...
摘要:時間年月日星期六說明本文部分內容均來自慕課網。必填用于執行命令,當執行完畢后,將產生一個新的文件層??蛇x指定此鏡像啟動時默認執行命令??蛇x用于指定需要暴露的網絡端口號??蛇x向鏡像中掛載一個卷組。 時間:2017年09月16日星期六說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com 教學源碼:無 學習源碼:無 第一章:課程簡介 1-1 課程介紹 Docke...
摘要:,,當前使用的容器名為,為。守護式容器沒有交互式會話,適合運行應用程序和服務。大多數時候是需要以守護式來運行容器。與之前創建的容器相比,沒有返回會話,只是返回了一個容器。刪除容器運行中的容器無法刪除,必須先停止。 windows 7, docker 1.3.2,當前使用的容器名為aoct,ID為614122c0aabb。 開啟已經停止的容器 可以start + 容器名 $ sud...
摘要:郵件激活后,可以測試登錄這條命令會完成登錄,并將認證信息報錯起來供后面使用。所以先用命令退出容器,再運行命令命令中,指定了要提交的修改過的容器的目標鏡像倉庫鏡像名。提交的知識創建容器的鏡像與容器的當前狀態之間的差異部分,很輕量。 假期快要結束了,干點正事,接著Docker的學習。 構建鏡像 構建鏡像的兩種方法: 使用docker commit 命令 使用docker build...
摘要:一個鏡像可以放到另一個京廣線的頂部,位于下面的鏡像稱為父鏡像,最底部的稱為基礎鏡像。鏡像是基于聯合文件系統的一種層式的結構,由一系列指令一步步構建處理。拉取鏡像使用命令啟動一個鏡像時,會檢查本地是否存在該鏡像。 什么是鏡像 Docker鏡像時由文件系統疊加而成,最底端是一個引導文件系統,即bootfs,這很像典型的Linux/Unix的引導文件系統。Docker用戶幾乎永遠不會和引導...
摘要:類似包中的功能這很好的解決了的大數據級瓶頸問題。也支持分布式的機器學習算法,比如使用機器學習庫。部署本文將通過講解如何快速部署容器,并通過一些簡單的機器學習例子展示如何使用這個航母級別的組合拳。 showImg(https://segmentfault.com/img/remote/1460000004838121); 題圖為美國尼米茲核動力航空母艦 介紹 大數據時代,我們常常面對海量...
閱讀 994·2023-04-25 14:41
閱讀 2445·2021-09-28 09:35
閱讀 3619·2019-08-30 15:53
閱讀 1940·2019-08-29 15:26
閱讀 1060·2019-08-28 17:59
閱讀 4229·2019-08-26 13:45
閱讀 2835·2019-08-26 13:33
閱讀 1639·2019-08-26 11:46