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 看一下效果,结果如下。

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

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

03-06 13:40