从零自制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 通过配置能力做到部分字段可配 四.升级上线(普适于高并发大…

2314576

☞ 通用计算机启动过程 1️⃣一个基础固件:BIOS 一个基础固件:BIOS→基本IO系统,它提供以下功能: 上电后自检功能 Power-On Self-Test,即POST:上电后,识别硬件配置并对其进行自检&#xff0c…

学习JAVA的第十二天(基础)

算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述 解决问题的策略 机制。 查找算法 基本查找(顺序查找) 关键: 从0索引开始依次向…

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

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

ctf_show笔记篇(web入门---信息收集)

目录 信息收集 1-2:查看源代码 3:bp抓包 4:robots.txt(这个文件里会写有网站管理者不想让爬虫的页面或其他) 5:网站源代码泄露index.phps 6:同样也是源码泄露,(拿到…

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…

关于django makemigrations/migrate在生成数据表上遇到的一些问题

当你删除了生成的 migration 文件夹,将数据库从 SQLite 切换到 MySQL,并且在执行 makemigrations 命令时显示没有变化,同时 MySQL 中没有生成表,可能是由于以下原因造成的: Django迁移系统的工作方式:Djang…

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

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

软考 系统分析师系列知识点之详细调查(3)

接前一篇文章:软考 系统分析师系列知识点之详细调查(2) 所属章节: 第10章. 系统分析 第2节. 详细调查 在系统规划阶段,通过初步调查,系统分析师已经对企业的组织结构、系统功能等有了大致的了解。但是&…

力扣203移除链表元素

题目: 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 1,设置一个头节点,统一操作。 2,这里是用p查找,但是…

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

在Linux上使用通用二进制包安装MySQL

下载安装包 MySQL Community Downloads 安装依赖 mysql 数据目录初始化及服务启动阶段依赖libaio,检测是否已安装libaio dnf install libaio解压安装 ## 创建用户组 groupadd mysql ## 创建用户 useradd -r -g mysql -s /bin/false mysql ## 解压安装包 tar xv…

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

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

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

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

电商数据分析13——电商平台退货率分析与降低策略

目录 写在开头1. 退货率分析的重要性1.1 退货现象的影响1.2 退货数据的收集与分析 2. 数据分析揭示的主要退货原因2.1 产品描述不准确2.2 物流配送问题2.3 产品质量问题 3. 基于数据分析的退货率降低策略3.1 优化产品描述和图片3.2 改进物流配送服务3.3 加强质量控制和售后服务…