從零自制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.pswp.cn/news/716007.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716007.shtml
英文地址,請注明出處:http://en.pswp.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 加強質量控制和售后服務…