docker基础学习三(代码片段)

yangk1996 yangk1996     2023-04-05     283

关键词:

一、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里面提前配置好的。
技术图片

docker---dockerfile学习(代码片段)

DockerFile学习DockerFile是什么whatisDockerFile构建三步骤DockerFile构建过程解析DockerFile内容基础知识Docker执行Dockerfile的大致流程小总结DockerFile的体系结构保留字指令小总结案例自定义镜像mycentos编写注意:dockerbuild命令最后有一个.,.代表... 查看详情

docker基础命令学习(代码片段)

Docker学习Docker简介虚拟机和Linux容器Docker中基本概念镜像(Image)容器(Container)仓库(Repository)分层存储Docker的安装Centos6安装DockerCentos7安装Docker配置阿里云镜像加速器配置HelloWorld镜像底层运行原理Docker常用命令帮助命令dockerversion---查... 查看详情

docker学习---docker基础知识(代码片段)

目录docker的基础1、安装docker2、使用镜像3、镜像迁移|导入和导出4、dockerHub介绍5、搭建私有镜像仓库5.1、docker开源的镜像分发工具--dockerRegistry5.2、harbor部署6、使用容器7、容器导出和导入8、数据卷9、网络访问10、dockerfile10.1、基... 查看详情

docker基础学习一(代码片段)

一docker是什么?  docker是目前比较火的容器引擎,开发者可以打包应用以及依赖到可移植的容器中,然后发布到任何流行的Linux容器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。二安装dockeryum包... 查看详情

小白学习docker基础篇(代码片段)

系列文章:-小白学Docker之基础篇-小白学Docker之Compose-小白学Docker之SwarmPS:以下是个人作为新手小白学习docker的笔记总结1.docker是什么百科上的解释是这样的:Docker是一个开源的应用容器引擎,让开发者可以打包他... 查看详情

docker基础学习笔记一:docker概述和安装(代码片段)

Docker基础学习笔记一:Docker概述和安装容器的起源什么是容器Docker是什么Docker容器为什么这么火Docker能做什么?Docker的安装(centos8中)卸载容器的起源假设你们公司正在秘密研发下一个“今日头条”APP,我们... 查看详情

docker学习:docker基础容器构建(代码片段)

1.宿主机环境1.1.查看ubuntu系统版本准备一台ubuntu系统,可以是vm也可以实体机。本文的内容是基于vm环境构建。cat/etc/lsb-releaseDISTRIB_ID=UbuntuDISTRIB_RELEASE=22.04DISTRIB_CODENAME=jammyDISTRIB_DESCRIPTION="Ubuntu22.0 查看详情

docker基础学习二(代码片段)

一部署Mysql搜索镜像dockersearchmysql拉取镜像dockerpullcentos/mysql-57-centos7创建Mysql容器dockerrun-di--name=docker_mysql-p33306:3306-eMYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos733306是宿主机的端口,3306是docker的端口,MMYSQL_ROOT_PASSWORD指定Mysql,root的密码二... 查看详情

docker虚拟化实战学习——基础篇(转)(代码片段)

Docker虚拟化实战学习——基础篇2018年05月26日02:17:24 北纬34度停留 阅读数:773更多个人分类: Docker Docker虚拟化实战和企业案例演练深入剖析虚拟化技术概念和应用场景虚拟化,一是项技术~~,是一种资源解决方... 查看详情

docker基础(代码片段)

目录Docker基础一docker容器介绍1.1docker的理念1.2docker的组成1.3docker能干什么1.4docker改变了什么1.5基于docker的不可变基础设施二Docker镜像和容器管理2.1相关站点2.2Docker部署与实践三Docker的网络访问和数据管理3.1Docker网络3.2Docker数据数... 查看详情

docker学习系列-jdk基础镜像制作(代码片段)

准备一台安装有docker服务的机器1.编辑Dockerfile vimDockerfileFROMcentos:latestADD./jdk-8u141-linux-x64.tar.gz/usr/localENVJAVA_HOME/usr/local/jdk1.8.0_141ENVCLASSPATH$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.j 查看详情

docker技术学习(代码片段)

(一)Docker介绍Docker简介Docker是一个开源项目,诞生于2013年初,最初是dotCloud公司内部的一个业余项目,基于Google公司推出的Go语言实现。Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)... 查看详情

docker基础(代码片段)

三、docker安装官方地址:https://docs.docker.com/engine/install/centos/3.1.安装步骤1.卸载旧版本[root@docker~]#yumremovedockerdocker-clientdocker-client-latestdocker-commondocker-latestdocker-latest-logrotatedocker-logro 查看详情

docker学习总结(60)——docker-compose基础知识回顾总结(代码片段)

一、Docker-Compose的基本介绍Docker-Compose是Docker官方开源的项目,负责实现对Docker容器的快速编排,它是由python编写的。#说下Docker-Compose里的两个基本概念#服务(service):一个应用容器,也就是docker容器,#项目(project):由一组关联的容器组... 查看详情

docker学习总结(60)——docker-compose基础知识回顾总结(代码片段)

一、Docker-Compose的基本介绍Docker-Compose是Docker官方开源的项目,负责实现对Docker容器的快速编排,它是由python编写的。#说下Docker-Compose里的两个基本概念#服务(service):一个应用容器,也就是docker容器,#项目(project):由一组关联的容器组... 查看详情

docker基础必会!!!(代码片段)

docker基础必会!!!一.容器技术产生的背景二.docker理论2.1什么是docker?有什么作用?2.2docker的使用场景2.3docker引擎(DockerEngine)2.4docker与虚拟化的区别三.docker的架构(dockerarchitecture)四.docker三大组件 查看详情

docker学习总结(代码片段)

Docker学习总结一、Docker简介二、Docker安装2.1安装步骤2.2卸载Docker2.3配置阿里云镜像加速三、Docker常用命令3.1帮助命令3.2镜像命令3.3容器命令3.4其他常用命令四、Dockerfile4.1DockerFile简介4.2DockerFile体系结构(保留字指令)4.3案例4.3.1Base... 查看详情

docker学习笔记-安装(代码片段)

Docker学习笔记基础概念/名词解释准备工作安装启动Docker服务Docker常用命令卸载参考资料基础概念/名词解释名词说明image镜像docker封装好的一个模板,里面是一个可运行的服务,以及运行此服务所需要的依赖环境。container... 查看详情