新手带你手把手搭建podman
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手带你手把手搭建podman相关的知识,希望对你有一定的参考价值。
参考技术A 1、最近发现了一个新的虚拟机podman,据说是比Docker更好的工具,首先搜搜podman是什么,有什么优势为什么说他比Docker好?
因为Docker总是会遇到一个反复出现且令人头痛的问题:“Docker 守护程序在多个核心上占用 100% CPU 资源,并导致主机无法正常使用。”
而Podman不需要守护程序,也不需要访问 root 权限组。Podman 能够替代大部分子命令(run, push, pull 等等)。由于不需要守护程序,而且会利用用户命名空间模拟容器中的 root,所以 Podman 不需要接入具有 root 权限的 socket——这就解决了 Docker 长期以来一直面临的老大难问题。
2、开始搭建
我们都需要哪些依赖才能正常使用Podman?
Podman —— Podman 能够替代大部分子命令(run, push, pull 等等)。由于不需要守护程序,而且会利用用户命名空间模拟容器中的 root,所以 Podman 不需要接入具有 root 权限的 socket,这就解决了 Docker 长期以来一直面临的老大难问题。
Buildah —— Buildah 负责构建 OCI 镜像。令人困惑的是,podman build 也能够用于构建 Docker 镜像,但其速度太慢而且默认使用 vfs 存储驱动的设置会占用大量磁盘空间。相比之下,buildah bud(「利用 Dockerfile 构建」)对我来说速度更快,而且能够自动覆盖存储驱动。
Skopeo —— Skopeo 工具允许我们对 Docker 与 OCI 镜像执行 psuh、pull 以及 copy 等操作。
知道这些后,我们就可以开始安装了。
首先来安装POdman
Mac安装的命令是brew install podman
Linux为sudo yum -y install podman
这就装好了
超详细的Java开发环境搭建指南(手把手带你开发第一个Java程序)
很多新手小白在学习Java的时候,碰到的第一难题就是不知道如何安装和配置java环境。
这回我整理了史上最详细的安装及Java环境配置教程,通过图文并茂的方式详细讲解每一步骤,手把手教你安装和配置和Java环境。
视频在线观看:
Java零基础教程视频(适合Java 0基础,Java初学入门)
资料、源码下载:
Java零基础入门视频教程全套免费下载【适合新手初学】 - 动力节点 (bjpowernode.com)
Java程序的开发过程与运行过程
图1-1:Java的加载与执行
● Java程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的操作系统中完成,例如在windows环境下进行编译,在Linux环境下运行,这是因为有JVM机制的存在,做到了一次编译到处运行(跨平台/可移植)。
● 编译阶段需要使用javac.exe(安装JDK之后该命令就存在了)命令,运行阶段需要使用java.exe(安装JRE之后该命令就存在了)命令。
● 一个java源文件可能会编译生成多个class文件。
● java源文件中的源代码如果不符合java的语法机制则编译时编译器会提示错误信息,并且无法生成class文件。反之则生成class文件,而class文件才是最终要执行的程序,此时将java源文件删除是不会影响java程序运行的(当然,我们也不必删除java源文件,因为在运行class文件之后,如果没有达到预期的运行效果,这个时候还需要将java源代码修改,重新编译,以达到最终的运行效果)。
● 若生成的字节码文件名为A.class,那么我们称A为一个类的名字(这个先记住就行,后面的内容会讲)。
● 当编译阶段完成之后,我们可以使用JRE中的java.exe命令运行程序,例如执行命令“java A”,该命令执行后会启动类加载器,类加载器去硬盘上搜索A.class文件,找到该字节码文件之后,将其加载到JVM当中,JVM中的解释器会将A.class字节码文件解释为操作系统可以执行的二进制码,然后操作系统通过执行二进制码和硬件平台交互。
● 运行java程序的前提是当前操作系统上已经安装了对应版本的JVM(JVM不是单独安装的,安装JRE即可,不同的操作系统需要安装不同版本的JRE,不同版本的JRE对应不同版本的JVM)。
windows系统当中显示文件扩展名
java源文件要求扩展名必须为.java,不能使用其他扩展名,有些操作系统默认不显示文件扩展名,大家可按照以下步骤,将文件的扩展名显示出来(以win7系统为例):
图1-2:打开桌面上的计算机,菜单栏上的“工具”
图1-3:文件夹选项
图1-4:点击“查看”,把上图红框的对勾去掉
windows dos 常用命令
● 打开DOS命令窗口,使用快捷键:win + r,输入cmd,回车。
● dir命令:查看当前目录下所有的子文件或子目录。
● cd命令:切换路径,使用方法是:cd+目录路径,需要注意的是路径包括相对路径和绝对路径,对于windows来说从硬盘的根路径下开始的路径都是绝对路径,例如:C:\\Program Files、C:\\Program Files\\Java等,所有的相对路径都是从当前所在目录作为起点开始查找的路径。另外cd ..切换到上级目录,cd \\切换到根目录。
图1-5:cd命令使用办法
● 切换盘符:直接输入c:,或者d:,然后回车即可。切换盘符不需要cd命令。
● del命令:删除文件或目录,例如:del *.class,删除当前目录下所有的.class文件。
● ipconfig命令:查看IP地址等信息,查看更详细的信息使用ipconfig /all。
● ping命令:查看两台计算机是否可以正常通信,例如:ping 192.168.1.100,正常情况下发送数据包和接收数据包数量相同并且没有延迟的时候表示通信正常,ping 192.168.1.100 -t表示一直发送数据包和接收数据包,ping www.baidu.com可以查看电脑是否可以正常上网。
● shutdown命令:设置定时关机,例如:shutdown -s -t 7200表示2个小时之后自动关机。
● mkdir命令:创建目录,例如:mkdir abc表示在“当前目录”下新建abc目录。
● cls命令:清屏。
● exit命令:退出DOS命令窗口。
文本编辑器EditPlus安装与配置
这里安装的EditPlus版本为:,双击之后,一直点击下一步就可以了。
以下主要说一下对该工具的配置:取消自动备份、设置字体大小、设置缩进长度:
图1-6:菜单栏“工具”,然后“首选项”
图1-7:设置字体和取消自动备份
图1-8:设置缩进长度
图1-9:这里设置缩进长度为3
常用文本编辑快捷键
使用快捷键可以大大提高开发效率,从现在起你应该尽可能使用快捷键来代替鼠标,以下先列举出通用的文本编辑快捷键。当然,如果大家想熟练掌握,还是需要后期不断的使用:
● ctrl+c 复制
● ctrl+v 粘贴
● ctrl+x 剪切
● ctrl+s 保存
● ctrl+z 撤销
● ctrl+y 重做
● ctrl+a 全选
● home 光标回到行首
● end 光标回到行尾
● ctrl + home 光标回到文章开始
● ctrl + end 光标回到文章末尾
● shift + home 或 end 选中一行
● 鼠标双击 (选中一个单词)
● ctrl + shift + 右箭头或左箭头 (选中一个单词)
● ctrl + f 查找
JDK的下载与安装
Java语言由Sun(Sun Microsystems)公司开发,2009年时被Oracle(甲骨文)公司收购,所以目前JDK需要从Oracle下载,Oracle官网地址是https://www.oracle.com,这里我们学习Java10版本,所以下载JDK10,具体下载过程如下图所示:
图1-10:选择JavaSE
图1-11:点击“Download Java SE...”
图1-12:点击“DOWNLOAD”
图1-13:选择“Accept...”,然后选择“windows”版
注意:JDK10要求windows操作系统必须是64bit的。下载完成之后,直接双击进行安装,具体步骤如下所示:
图1-14:点击“下一步”
图1-15:选择JDK10的安装目录,点击下一步
图1-16:正在安装JDK10
图1-17:选择JRE10的安装目录,点击“下一步”
图1-18:正在安装JRE10
图1-19:点击关闭,安装结束
JDK的bin目录
图1-20:java和javac命令的存放位置
javac.exe命令用来完成java程序的编译,java.exe命令用来完成java程序的运行。
Java编写helloworld
该程序大家目前不需要理解,照抄就行,包括大小写以及标点符号,这只是一个测试Java环境的程序,后期学习的过程中会让大家理解该程序的含义。首先新建文件,具体代码如下所示:
public class HelloWorld
public static void main(String[] args)
System.out.println("动力节点-口口相传的Java黄埔军校");
编译HelloWorld程序
编译java程序需要使用JDK bin目录下的javac.exe命令,首先我们来看看这个命令是否可以在DOS命令窗口中使用,如下图所示:
图1-21:测试javac命令
根据以上测试结果,说明在“C:\\Users\\Administrator”目录下javac命令是无法使用的,那么我们来切换到另外一个目录“C:\\Program Files\\Java\\jdk-9.0.4\\bin”再来测试,如下图所示:
图1-22:切换到bin目录下再次测试javac命令
根据测试结果可以得出:windows操作系统默认是从当前路径下查找可执行命令文件的。
但每一次使用javac命令的时候都需要切换到bin目录下,显然是很麻烦的,有什么比较方便的方法吗?
我们先来研究一下ipconfig命令是怎么执行的,如下图所示:
图1-23:测试ipconfig命令
ipconfig.exe文件实际上在“C:\\Windows\\System32”目录下,如下图所示:
图1-24:ipconfig.exe在这里
ipconfig命令为什么在命令窗口可以直接执行而不需要切换到命令所在目录呢?实际上是因为windows系统中的环境变量path在起作用。如下图所示,windows操作系统有这样的默认配置:
图1-25:windows自带的path环境变量配置
我们来做一个实验,把上图path环境变量当中的“C:\\Windows\\System32;”删掉。怎么删除呢?鼠标双击Path,将“C:\\Windows\\System32;”删除,注意:System32路径后面的半角分号也需要删除,然后点击确定。将所有的DOS命令窗口全部关闭(注意:修改了任何环境变量,DOS命令窗口都需要关闭之后重新打开,这样新的环境变量才会生效),打开一个新的DOS命令窗口,测试ipconfig,如下图所示:
图1-26:测试ipconfig命令
根据以上测试,windows操作系统已经找不到ipconfig.exe文件了,接下来我们再重新恢复path环境变量的配置,配置环境变量path的步骤是这样的:
在电脑桌面图标上点击鼠标右键,继续点击,在弹出的窗口上选择然后在弹出的窗口上点击,此时会弹出以下窗口:
图1-27:配置环境变量的窗口
在上图的系统变量当中找到path环境变量,点击“编辑”,将“C:\\Windows\\System32;”添加到path环境变量当中(注意:环境变量path当中有很多路径,路径和路径之间必须使用半角的英文分号进行分隔),然后点击确定,重新配置了环境变量需要关闭所有DOS命令窗口,打开一个新的DOS窗口测试ipconfig命令,如下图所示:
图1-28:测试ipconfig命令
根据以上讲解,我们怎么让javac命令可以使用呢?很简单,我们只要把“C:\\Program Files\\Java\\jdk-9.0.4\\bin;”路径配置到环境变量path当中即可,配置完成之后,再次测试javac命令,如下图所示:
图1-29:测试javac命令
在javac命令后面添加“-version”参数可以查看编译器的版本,如下图所示:
图1-30:查看编译器版本
到这里,大家应该掌握环境变量path的配置了吧?通过以上内容的学习,大家应该思考这样一个问题:path环境变量是隶属于java的吗,它和java有关系吗?
答案是:path环境变量隶属于windows操作系统,不属于java范畴,是windows操作系统搜索某个命令文件的路径依据。
windows操作系统到底是如何搜索命令文件的呢?实际上它会先在当前路径下找,找不到的时候会自动去环境变量path的路径中查找,找到则执行该命令,找不到则在DOS窗口中提示错误信息。
希望大家以后遇到类似的“在DOS命令窗口中输入某个命令时出现找不到命令”这样的问题都能够独立的解决。
通过以上的配置,javac命令已经可以使用了,那么它具体怎么使用才能编译java程序呢,接下来我们详细的讲解一下javac命令的具体使用办法。
javac命令的语法格式是:“javac java源文件路径”,非常简单,就是javac命令后面加上java源文件的路径,当然,之前我们说过,路径包括绝对路径和相对路径。也就是说javac后面的java源文件路径可以是绝对的也可以是相对的,如下图所示:
图1-31:编译之前
图1-32:编译之后(绝对路径方式)
图1-33:编译之后(相对路径方式)
我们把HelloWorld.java文件中的程序故意修改让其出现错误,再次编译,如下图所示:
public class HelloWorld
public static void main(Strin[] args) //String修改为Strin
System.out.println("动力节点-口口相传的Java黄埔军校");
图1-34:编译器报错测试
通过以上的测试,可以得出这样的结论:java源代码中存在语法错误,在编译的时候编译器会提示错误消息,并且不会生成class字节码文件。在以后的学习过程当中,编译的时候尽可能将错误信息记录起来,并且给出该错误的解决方案,久而久之不断积累,大家就会成为改错高手。
小结:通过本小节的学习,每位同学都必须掌握path环境变量的作用,以及它是怎么配置的,还有怎么使用javac编译java源程序。
运行HelloWorld程序
运行java程序的前提是已经正常生成了class字节码文件,本课程中生成的class文件是,我们称HelloWorld为类名。那么怎么运行呢,这个时候就需要借助JDK bin目录下的java.exe命令了,我们先来测试这个命令是否可以在DOS窗口中使用,如下图所示:
图1-35:测试java.exe是否可用
经过测试,我们看到java.exe命令是可以在DOS窗口中直接使用的,其实只要javac.exe可以使用,那么java.exe就一定可以使用,因为javac.exe和java.exe都在JDK的bin目录下,之前的课程中这个目录已经配置到环境变量path当中,所以这里java.exe肯定也是可以使用的。
那么java.exe具体怎么使用呢,语法是:“java 类名”,需要注意的是java命令后面是类名,而不是class文件的名字,也不是class文件的路径,不能这样写java HelloWorld.class,也不能这样写java E:\\course\\JavaProjects\\01-JavaSE\\chapter01\\HelloWorld.class,只能这样写:java HelloWorld,它的运行原理是:在命令窗口中输入“java HelloWorld”回车之后,先启动的是类加载器,类加载器从硬盘上查找HelloWorld.class字节码文件,默认情况下类加载器只从当前路径下查找,查找到之后则将HelloWorld.class文件加载到JVM并执行,如果没有查找到则会出现错误信息(如果输入的是“java A”那么类加载器会从硬盘上查找A.class字节码文件,以此类推),如下图所示:
图1-36:运行HelloWorld类(正常)
由于默认情况下类加载器只从当前所在的路径下加载字节码文件,如果该字节码文件不存在会提示什么错误信息呢?请看下图:
图1-37:运行A类(错误)
类加载器默认从当前路径下加载,那么可以指定让类加载器从指定的目录下加载class文件吗?答案是可以的,这个时候就需要借助classpath这个环境变量了(classpath环境变量隶属于java语言,专门给类加载器指路的),接下来我们来设置一下classpath环境变量,此处把classpath设置为E:\\,如下图所示:
图1-38:设置环境变量classpath
设置完成后关闭所有DOS窗口,重新开启新窗口,接下来看下图:
图1-39:测试环境变量classpath
通过以上的测试得知,当环境变量classpath=E:\\之后,chapter01目录下虽然有HelloWorld.class,并且当前目录就在chapter01下,但运行的时候却出现了以上错误信息,可见类加载器不再从当前路径下加载了。
那我们把HelloWorld.class文件放到E:\\目录下呢?请看下图:
图1-40:测试环境变量classpath
通过以上的测试可以得出,当设置环境变量classpath=E:\\的时候,类加载器只去E:\\目录下加载class文件了,不再从当前目录下加载,也不会去其它目录下加载。这样对于以后的开发来说反而更麻烦了,因为每一次编译生成的class文件都要放到E:\\目录下类加载器才能找到,所以目前来说classpath环境变量是不需要配置的,因为classpath在没有配置的情况下,类加载器默认会从当前所在的目录下加载class,也就是说以后要想运行class首先要将DOS窗口的目录切换(cd命令)到class文件所在的位置,然后再运行。当然我们也可以把环境变量classpath配置为:classpath=.,因为.代表当前路径。
小结:通过以上内容的学习,我们知道classpath环境变量不属于windows操作系统,是java编程语言当中的一种机制,这种机制是专门为类加载器加载class文件时提供路径依据的。最终的结论是classpath环境变量目前是不需要配置!当然,随着后面内容的学习,大家会知道classpath环境变量总有一天是需要配置的,到那个时候大家可别忘了将“当前路径.”配置到classpath当中,例如:classpath=.;path1;path2;,如果没有把.配置到classpath当中,那么类加载器就不再从当前路径下加载class了。到此为止大家必须掌握两个重要环境变量,一个是windows操作系统的path环境变量,另一个是java语言的classpath环境变量。至于有些参考资料上还提到了JAVA_HOME等环境变量,其实这些环境变量对于我们目前来说是不需要配置的,以后用到的时候再说吧。
以上是关于新手带你手把手搭建podman的主要内容,如果未能解决你的问题,请参考以下文章