从零自制docker-1-【环境配置 docker go介绍与安装】

文章目录

  • docker简介
  • 举例
  • docker安装
  • go语言
  • go安装
  • go 配置

docker简介

Docker可以看作是一种极其轻巧的“虚拟机”,它允许你将一个或多个程序及其运行环境打包在一起,形成一个标准化的单元,这个单元可以在任何支持Docker的系统上运行,不受底层操作系统的限制。

如果用更贴近生活的例子来解释,Docker就像是软件世界中的“集装箱”。集装箱在物流行业中用于标准化运输,它可以装载货物,保护里面的物品不受外界环境影响,而且可以用同一种方式在全球范围内快速装卸和运输。同样地,Docker容器将软件和它的运行环境打包起来,确保软件能在任何环境中以相同的方式运行,简化了软件的部署和分发过程。

举例

当然,让我们通过一个简单的日常例子来理解Docker。

想象你要做一道复杂的菜肴,例如说,法式煎鸭胸。首先,你需要一个详细的菜谱,告诉你烹饪步骤和所需的所有配料(这就像创建Dockerfile)。然后,你需要在自己的厨房里准备所有的配料并按照菜谱开始烹饪(这就像构建Docker容器)。

但是,有一个问题。这道菜非常复杂,你不可能到每个人家里去亲自做。现在,假设你有一个神奇的设备,可以忠实地复制出你的整个厨房和煎鸭胸,包括海盐撒在鸭胸上的每一个颗粒,而且还保持着你烹饪完成时的状态。然后你可以把这个复制好的"厨房"送到任何地方,人们只需要稍作热身,就可以享用这道菜(这就像运行Docker容器)。

在这个例子中,你的厨房就像是一个Docker容器,你的菜谱就像是Dockerfile,你准备的配料就是应用及其依赖环境,而你复制并发送到其他地方的"厨房"就像是在其他机器上运行的Docker容器。

所以,Docker的工作方式有点像是"煮好"你的应用程序和它的环境,然后把"煮好"的容器"送"到任何你想要的地方,再稍作热身(运行)就可以享用了。

docker安装

curl -sSL https://get .docker.com | sh
  1. curl: 这是一种命令行工具,用于获取或发送数据,此处用于从指定的URL下载数据。

  2. -sSL: 这些都是curl命令的选项。其中,-s 或 --silent 选项意味着静默模式。在静默模式下,所有常规的进度显示和错误消息都会被抑制。-S 或 --show-error 选项意味着显示错误。当使用了 -s 选项时,这个 -S 选项非常有用,可以在发生问题时显示错误信息。-L 或 --location 选项意味着如果服务器报告该页面已移至其他地方(即发送了一个位置头),则跟随至新的位置。

https://get.docker.com: 这是用于下载Docker安装脚本的URL。

  1. |: 这是一个管道符号,它的作用是将前面命令的输出作为下一个命令的输入。

  2. sh: 这是Shell的解释器,这里的用途是执行从 https://get.docker.com 下载下来的脚本。
    即可以直接使用docker了

go语言

Go 语言,也被称为 Golang,是由 Google 开发的一种静态强类型、编译型的编程语言。Go 语言拥有 C 语言的效率、Python 语言的易读性以及并发处理能力强等特性。

Go 语言的语法十分清晰简单,方便新手学习。同时,Go 语言提供了丰富的标准库,包括网络编程、图形处理、文本处理、数据库操作等方面,可以让开发者在无需使用第三方库的情况下,直接使用标准库完成很多功能开发。

C/C++是传统的编程语言,是面向过程和面向对象的语言,拥有完整的指针操作和内存管理功能。 而Go语言是一种现代化的编程语言,它具有垃圾回收机制,让开发者不需要过多关注内存管理问题,同时支持并发编程

此外,Go 语言是一种编译型语言,它在运行前需要先进行编译,编译后的执行效率相对高。而在编译过程中,Go 语言也会完成很多错误和问题的检测,保证了程序的质量。

最后,Go 语言在并发处理上也做得非常出色。它支持 Goroutines,类似于轻量级的线程,可以进行大规模的并行运算,非常适合需要处理高并发的网络编程和云编程。

go安装

  • 去官网上找合适的版本下载
  • 下载好后解压
tar -C /usr/local -xzf  go1.22.0.linux-amd64.tar.gz
  • 编译$HOME/.bashrc,并使其立刻生效
code  $HOME/.bashrc
  • tar:这是一个常用的Unix/Linux命令,用于处理归档/压缩文件。

  • -C /usr/local:‘-C’参数用于改变tar命令的工作目录。在这里,tar将会在’/usr/local’目录下进行操作。

  • -xzf:这三个选项用于告诉tar命令执行什么操作。

    • x:表示‘extract’,也就是解压缩。
    • z:表示tar命令应使用gzip来解压或压缩文件。
    • f:表示‘file’,也就是后面跟着的会是一个文件名。
  • go1.22.0.linux-amd64.tar.gz:这是你要解压的文件的名字。文件名表示这是Go语言1.22.0版本的Linux平台的64位安装包。

添加 export PATH=$PATH:/usr/local/go/bin
  • export:这是用于设置环境变量的 shell 命令。这告诉 shell,我们想要修改 PATH 环境变量的值。

  • PATH:这是一个特殊的环境变量,操作系统用它来查找命令行中输入的命令。当你在命令行中输入一个命令(比如 go),shell 会在 PATH 变量所列出的所有目录中查找这个命令。

  • $PATH:这是获取当前 PATH 环境变量值的方法。在这里,我们用冒号(:)将它与新路径连接在一起,来添加新的路径。

  • :/usr/local/go/bin:这是你要添加到 PATH 中的新路径。这是在你的系统上安装的 Go 语言二进制文件的位置。

  • =:这是赋值的操作符。在这里,它用于将新的 PATH 值(即原来的 PATH 值,后面加了新的路径)赋给 PATH 环境变量。

source $HOME/.bashrc
  • source :这是一个 Bash 命令,它会读取并在当前 Shell 会话中执行指定的文件中的命令。

  • $HOME :这是一个表示用户主目录的环境变量。在大多数系统中,这就等同于 /home/您的用户名。

  • /.bashrc :.bashrc 是一个在用户主目录下的文件,该文件包含一些定义 Bash Shell 行为的脚本。每次启动新的 Bash Shell 会话(例如新开一个终端窗口)时,.bashrc 文件中的脚本会自动执行。
    安装成功

go 配置

GOPATH 真正存放代码的路 Go 找依赖包时会根据 GOPATH 来寻找 GOPATH
目录约定有如下 个子目录。
src:您的Go源文件存放在这里。每个包在src下有自己的目录。
pkg:这个目录包含包对象。这些是编译后的Go源代码文件,用于生成可执行文件。
bin:这个目录包含可执行的命令。当您运行go install package并且go install通过src目录下的工作区定位包,Go就会将文件安装到这里。
这里以 /go为GOPATH 路径,编辑 $HOME/.bashrc 文件,将命令 export GOPATH=/go 添加到文件中,
然后执行 source $HOME/.bashrc ,之后再执行 go env 看一下效果,结果如下。

在这里插入图片描述

可以看到, $GOPATH 己经被指定了。
接下来的代码都会基于以上配置,代码路径为 $GOPATH/src/github.com/xianlubird/
mydocker 项目名称为 mydocker ,后面会基于这个路径进行开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/716007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实用!IntelliJ IDEA离线开发使用要点(一)

如果IntelliJ IDEA在本地网络之外没有HTTP访问,它将无法检查更新和应用补丁。在这种情况下,您必须下载新版本的IDE并按照离线安装中的描述手动安装它们。 IDEA v2023.3正式版下载 注意:没有互联网接入,您不能安装IntelliJ IDEA使…

SaaS 电商设计 (九) 动态化且易扩展的实现购物车底部弹层(附:一套普适的线上功能切量的发布方案)

目录 一.背景1.1 业务背景1.2 技术负债 二.技术目标三.方案设计3.1 解决移动端频繁发版3.1.1 场景分析3.1.2 技术方案 3.2 减少后端坏味道代码&无法灵活扩展问题3.2.1 通过抽象接口完成各自单独楼层渲染逻辑3.2.2 通过配置能力做到部分字段可配 四.升级上线(普适于高并发大…

学习:吴恩达:什么是神经元?神经网络如何工作?

学习-吴恩达《AI for everyone》2019 深度学习非技术解释 第2部分 可选.zh_哔哩哔哩_bilibili 深度学习Deep learning 人工神经网络Artificial Neural network 什么是神经网络? 只有一个神经元 4个神经元的神经网络 神经网路的绝妙之处 神经网路的绝妙之处就在…

Java快读

java的快读 (1)BufferedReader BufferedReader br new BufferedReader(new InputStreamReader(System.in));//定义对象String[] strings br.readLine().split(" ");//读取一行字符串,以空格为分隔转化为字符串数组int n Integer.parseInt(strings[0])…

k8s分布式图床(k8s,metricsapi,vue3+ts)

image-manage 图像管理应用 图像管理应用提供了一个方便管理图片的平台,支持单机和Kubernetes集群部署。请确保您至少拥有一个MySQL数据库和一个Redis数据库,以及一个至少为Kubernetes 1.29版本的集群(如果选择集群部署)。 文档…

PCL1.14.0安装、使用教程

写在前面 本文内容 本文是PCL1.14.0在Windows下的安装、使用教程; PCL、Open3D其他版本的编译和使用相关教程见 各个版本的Open3D、PCL的编译、使用教程平台/环境 windows11(windows10): visual studio 2022;cmake 3.22; VsCode转载请注明出处&#xff…

http和https的区别是什么?

–前言 传输信息安全性不同、连接方式不同、端口不同、证书申请方式不同 一、传输信息安全性不同 1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。 2、h…

排序(3)——直接选择排序

目录 直接选择排序 基本思想 整体思路(升序) 单趟 多趟 代码实现 特性总结 直接选择排序 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的…

BUUCTF---数据包中的线索1

1.题目描述 2.下载附件,是一个.pcap文件 3.放在wireshark中,仔细观察数据流,会发现有个叫fenxi.php的数据流 4.这条数据流是http,且使用GET方式,接下来我们使用http.request,methodGET 命令来过滤数据流 5.在分析栏中我们追踪htt…

查看端口占用命令

fuser 8080/tcp netstat -tuln | grep 8080 lsof -i:8080 ss -tuln | grep 8080

数据挖掘:航空公司的客户价值分析

需求分析 理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据,对客户进行分类对不同类别的客户进行特征分析&#xf…

IEEE754标准的c语言阐述,以及几个浮点数常量

很多年前,调研过浮点数与整数之间的双射问题: win7 intel x64 cpu vs2013 c语言浮点数精度失真问题 最近重新学习了一下IEEE754标准,也许实际还有很多深刻问题没有被揭示。 计算机程序设计艺术,据说这本书中也有讨论。 参考&…

抖音视频批量采集软件|视频评论下载工具

在日常工作中,需要频繁下载抖音视频,但逐个复制分享链接下载效率太低?别担心!我们推出了一款专业的抖音视频批量采集软件,基于C#开发,满足您的需求,让您通过关键词搜索视频并自动批量抓取&#…

力扣每日一题 受限条件下可到达节点的数目 DFS

Problem: 2368. 受限条件下可到达节点的数目 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {int ans 0;boolean[] set;List<Integer>[] es;publ…

Unity中URP下实现水体(C#动态生成渐变图)

文章目录 前言一、Shader部分1、申明水渐变图纹理和采样器2、在片元着色器&#xff0c;进行纹理采样&#xff0c;并且输出 二、C#脚本部分1、我们新建一个C#脚本2、我们定义两个变量3、在Start内&#xff0c;new 一个Texture2D(宽&#xff0c;高)4、定义一个Color[宽*高]的颜色…

企微hook源码第二弹

免费的企微框架&#xff0c;可下载测试。 支持文本消息&#xff0c;图片消息&#xff0c;视频消息&#xff0c;文件消息。 有兴趣可以进群交流。649480745&#xff0c;群内不定期开源企微hook源码 接下来就是第二弹的企微hook源码。后续会在群内开源完整源码。

diskMirror-backEnd-spring-boot | diskMirror 后端服务器 SpringBoot 版本!

diskMirror-backEnd-spring-boot 开源技术栏 diskMirror 后端服务器 SpringBoot 版本! 此版本中拓展了 DiskMirrorBackEnd&#xff0c;是一个完全的SpringBoot项目&#xff01; 目录 diskMirror-backEnd-spring-boot 目录我如何使用&#xff1f; 部署与配置我如何使用其中的…

Java+SpringBoot+Vue:志愿服务的数字化之旅

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

理想汽车狂飙18%,造车新势力洗牌

2月27日&#xff0c;#理想汽车狂飙18%#话题冲上热搜&#xff1b;前一日&#xff0c;理想汽车(02015.HK)公布了2023年第四季度及全年财报。尽管其营收净利双增长&#xff0c;但业绩增长背后仍有隐忧。 「不二研究」据其2023年报发现&#xff1a;2023年&#xff0c;理想汽车研发…

【办公类-25-01】20240302 UIBOT上传 ”班级主页-育儿知识(家园小报)“

作品展示&#xff1a; 一、背景需求&#xff1a; 本学期制作了 “育儿知识&#xff08;家园小报&#xff09;”合并A4内容 【办公类-22-08】周计划系列&#xff08;4&#xff09;“育儿知识&#xff08;家园小报&#xff09;“ &#xff08;2024年调整版本&#xff09;-CSDN博…