docker基础学习三

一、Dockerfile学习

由一系列的参数和命令构成的脚本。这些命令应用于基础镜像并最终创建一个新的镜像。基础镜像就是操作系统级别的镜像。

  • 常用命令
FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name 声明镜像的创建者
ENV key value 设置环境变量 (可以写多条)
RUN command 是Dockerfile的核心部分(可以写多条)
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir 设置工作目录
  • 使用脚本创建镜像
//创建目录
mkdir –p /docker/dockerjdk8

//通过ftp上传一个jdk到dockerjdk8目录里面

//创建一个名为Dockerfile文件
vi Dockerfile

//配置Dockerfile文件
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER YANGK
#切换工作目录
WORKDIR /docker
RUN mkdir  /docker/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u131-linux-x64.tar.gz /docker/java

#配置java环境变量,如果不知道jdk解压之后的命令,可以在宿主机解压看看
ENV JAVA_HOME /docker/java/jdk1.8.0_131
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH  $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

//执行命令构建镜像
docker build -t=‘jdk1.8‘ .
-t:指定镜像名称
.指定Dockerfile的文件夹,当前目录就有,所以这个点就指代当前目录

//查看镜像是否创建成功
docker images

二、构建私有仓库

  • 搭建私有仓库
//搜索镜像
docker search registry

//拉取镜像
docker pull registry

//启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry

查看私有仓库是否搭建成功,打开浏览器访问http://centosIP:5000/v2/_catalog 看到{"repositories":[]}表示搭建成功

修改daemon.json,让docker信任私有仓库地址

//修改daemon.json
vi /etc/docker/daemon.json

//增加如下内容
"insecure-registries":["centosIP:5000"]

//重启docker服务
systemctl restart docker

  • 镜像上传至私有仓库
//标记此镜像为私有仓库的镜像
docker tag  jdk1.8 centosIP:5000/jdk1.8

//再次启动私服容器
docker start registry

上传标记的镜像
docker push centosIP:5000/jdk1.8

再次访问仓库

三、通过Maven插件自动部署

  • 修改宿主机的docker配置,让其可以远程访问
//让docker可以远程访问,docker默认关闭远程操作。
vi /lib/systemd/system/docker.service

其中在ExecStart=后添加配置-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

//刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
docker start registry
  • 创建一个Maven项目
//配置maven插件
<build>
        <finalName>dockerDemo</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <!-- 生成的镜像名称 -->
                    <imageName>192.168.100.128:5000/${project.artifactId}:${project.version}</imageName>
                    <!-- 基础镜像  相当于FROM jdk1.8-->
                    <baseImage>jdk1.8</baseImage>
                    <!-- 入口点 相当于ENTRYPOINT ["java","-jar","/dockerDemo.jar"]-->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!-- 创建路径,target路径-->
                            <directory>${project.build.directory}</directory>
                            <!-- dockerDemo.jar  相当于ADD dockerDemo.jar /-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <dockerHost>http://192.168.100.128:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>

  • 部署到docker服务和私服上
//进入项目工程目录下,将项目安装到本地仓库
mvn install

//输入以下命令,进行打包和上传镜像
mvn docker:build -DpushImage

  • 启动容器

docker run -di --name=demo -p 9002:8080 192.168.100.128:5000/demo:0.0.1-SNAPSHOT

  创建的是sprinboot项目默认端口是8080,

四、Jenkins学习

  • Jenkins是什么

    Jenkins是一个持续集成的工具,能从代码仓库中获取并产生代码更新列表并输出到编译输出信息。生成JUnit/TestNG测试报告,也就是用以图表等形式提供详细的测试报表功能。支持第三方插件,使得 Jenkins 变得越来越强大

  • 安装配置登录,需要JDK支持

    下载地址:

//安装
rpm -ivh jenkins-2.183-1.1.noarch.rpm

//配置修改用户和端口

vi /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_PORT="9909"

//启动服务,如果报错可以根据提示找到错误原因
systemctl start jenkins
//重启服务
systemctl daemon-reload
//查看启动状态
systemctl status jenkins

//获取初始密码
cat /var/lib/jenkins/secrets/initialAdminPassword

启动的时候失败,通过 systemctl status jenkins。看到是没有找到JDK(这个JDK我默然安装不是/usr/bin/java)

修改 vi /etc/init.d/jenkins,增加JDK路径

获取登录密码

启动等成成功出现这个页面,原因就是在插件管理器中检查了更新站点 ,使用了https,将它改成http就行了

//通过这个命令找到更新文件的路径
find / -name "hudson.model.UpdateCenter.xml"
//修改
vi /var/lib/jenkins/hudson.model.UpdateCenter.xml

重启Jenkins,就可以下载插件了

  • 安装插件

    上面哪一步之后就已经默认安装了一些插件,比如git之类的。下面安装一个Maven插件

选中之后直接点击下方的直接安装就可以了

  • 全局工具配置

    jenkins能够持续集成其实是调用maven插件,执行maven命令来达到这种集成效果

//解压
tar -zxvf apache-maven-3.6.1-bin.tar.gz 

//配置本地仓库
vi /yangk/apache-maven-3.6.1/conf/settings.xml

 - 工具配置

找到jenkins的全局工具配置

 配置JDK,GIT,Mvane

Git之前已经默认安装在Jenkins了,所以用默认的就可以了

  • 任务的创建与执行

    在执行这一步之前,我将一个普通的项目上传到git服务器里面了。

    • 新建项目

填写项目在Git的地址

找到这个项目pom.xml的位置,提前输入好项目编译启动命令,然后保存就可以了。

点击红框地方就可以启动这个任务了,我这边出现红色球和阴雨天的标识是因为我启动失败了,git的账号和密码没有配置

可以在左边看到这个项目的进度,点击进度条可以进去看到详细进度。如果全部配置成功之后就可以在docker看到完成的镜像了。也是需要在pom里面提前配置好的。

原文地址:https://www.cnblogs.com/yangk1996/p/12657719.html

时间: 2024-07-30 11:40:22

docker基础学习三的相关文章

Python入门基础学习 三

Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形,true就相当于1,false相当于0,可以用来计算 类型转换 转换:整数:int();字符串:str();浮点数:float() 转换例子:(图9) 如果用内置函数当变量名,比如str=123,一旦被赋值,再使用这个函数会被报错. type()函数可以明确告诉我们变量类型. isinstance

【补充】docker基础学习

docker 基础知识 之前写了一篇docker未授权访问的文章,现在来补充一下docker基础知识,以便更好的学习docker上的漏洞. docker是一款轻量级的虚拟化的产品,它属于层级化的架构.最底层是LXC和文件系统AUFS,上面是各种镜像,docker实际上是具有依赖关系的多个层组成的,不同的container可能共享底层的资源.docker的核心是基于cgroup和namespace隔离和限制资源. Cgroups是control groups的缩写,是Linux内核提供的一种可以限

Dango基础学习三

今天主要来学习一下Django的路由系统,视频中只学了一些皮毛,但是也做下总结,主要分为<静态路由>.<动态路由>.<二级路由> 一.先来看下静态路由 1.需要在project中的urls文件中做配置,然后将匹配到的urls转发到对应app的views的函数中 2.在对应的app的views中配置相应的函数 3.这个时候我们通过浏览器访问这个url,就可以得到如下的结果 ok.至此,静态路由我们就学习完了,下面我们开始学习动态路由 二.动态路由的学习,动态路由的学习主要

docker基础学习笔记

容器这四点一定要懂:注册服务器.仓库.镜像.容器 他们的范围依次缩小 注册服务器可以有多个仓库,仓库里面可以有多个镜像,每个镜像可以生成多个容器. docker属于C/S结构 支持三种连接方式: unix:///var/run/docker.sock tcp://host:port fd://socketfd docker在Centos7安装 1.yum安装docker yum -y install docker 2.安装结束后,启动docker systemctl start docker #

Docker 基础学习(一)

Docker官网:https://docker.com/ 中文翻译非常好的学习地址:http://dockerpool.com/static/books/docker_practice/index.html 学习一项新技术之前,我们应该只要是什么?为什么使用?怎么使用? 对于Docker,我们依然按此步骤来学习: 1.什么是Docker? 2.为什么使用Docker? 3.怎么使用Docker? 什么是Docker?(引自:http://dockerpool.com/static/books/d

docker基础学习一

docker 介绍 1.docker 是什么 ? docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中. 然后发布到任何一个 linux 系统上面. 特点: docker 容器启动和停止都很快,直接在宿主中可以完成. docker 容器占用的系统资源少,一台宿主可以运行很多容器 docker 操纵方便,简单易学习 docker 可以通过 dockerfile 配置文件自动创建和部署. docker 容器也是沙箱机制的,相互完全隔离 三大核心概念 : 镜像,

docker基础学习

一.什么是Docker 1.什么是Docker Docker是一个由GO语言写的程序运行的"容器"(Linux containers, LXCs):  目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机. Docker则实现了一种应用程序级别的隔离:  它改变我们基本的开发.操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的"容器"上来. Docker是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台. Dock

salesforce lightning零基础学习(三) 表达式的!(绑定表达式)与 #(非绑定表达式)

在salesforce的classic中,我们使用{!expresion}在前台页面展示信息,在lightning中,上一篇我们也提及了,如果展示attribute的值,可以使用{!v.expresion}展示信息. lightning在component中解析动态值的时候,会将{!} 这个里面的变量进行动态的解析以及展示.当然这个变量可以是基础类型,自定义类型,数组集合等等,当然如果表达式为空字符串或者是空格则不会解析.偶尔特殊的要求为需要输出'{!}'这个字符串,官方文档说可以使用<aura

JAVA多线程基础学习三:volatile关键字

Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个关键字的作用就是告诉编译器,只要是被此关键字修饰的变量都是易变的.不稳定的.那为什么是易变的呢?因为volatile所修饰的变量是直接存在于主内存中的,线程对变量的操作也是直接反映在主内存中,所以说其是易变的. 一.Java内存模型 Java内存模型规定所有的变量都是存在主存当中(类似于前面说的物理