日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自己动手写 Docker 系列文章总览

發布時間:2023/12/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自己动手写 Docker 系列文章总览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

本文章系列起源于:《自己動手寫 Docker》,編程實踐方得真知,雖然大部分代碼書中都有,但還是遇到了不少困難,下面是對于自己寫的 Docker Demo 的總覽

工程說明

同時放到了 Gitee 和 Github 上,都可進行獲取

  • GitHub: https://github.com/lw1243925457/dockerDemo
  • Gitee: https://gitee.com/free-love/docker-demo

工程基于 Go:1.17

由于系統原因,不能在 Windows 平臺運行,只能在 Linux 平臺上運行

本工程實現了的大致功能清單如下:

  • 構造實現 run 命令版本的容器
    • 實現 run 命令
    • 增加容器限制
    • 增加管道及環境變量識別
  • 使用 busybox 創建容器
    • 使用 AUFS 包裝 busybox
    • 實現 volume 數據卷
    • 實現簡單鏡像打包
  • 實現容器的后臺運行
  • 實現查看運行中的容器
  • 實現查看容器日志
  • 實現進入容器 Namespace
  • 實現停止容器
  • 實現刪除容器
  • 實現通過容器制作鏡像
  • 實現容器指定環境變量運行
  • 容器地址分配
  • 創建 Bridge 網絡
  • 在 Bridge 網絡創建容器

環境說明

本文基于下面的環境進行開發發運:

  • Ubuntu 20 TLS :本地搭建的 Ubuntu 系統
  • Centos7 :騰訊云服務器,也能跑本工程下的所有代碼

注:Windows 不能運行該工程,因為其中有些庫是 Linux 采用的,

但如果想要寫 Windows 的話,可以倉庫 RunC 中關于 Windows 相關的代碼

如果后期有時間的話,本工程也嘗試適配下 Windows 系統

看了下,windows 是基于:https://github.com/microsoft/hcsshim

感覺難度有點大,看看后面時間了,時間不緊的話,可以嘗試嘗試

運行說明

docker demo 的代碼都位于文件夾:mydocker 下

可參考下面的方式運行:

go mod init dockerDemo go mod tidy go build mydocker/main.go ./main run -ti /bin/sh

需求安裝 Go 環境:https://go.dev/doc/install

根據官網教程進行安裝即可

工程運行需要基礎鏡像:busybox,在文章中有說如何進行配置安裝:自己動手寫 Docker 系列 – 4.1 使用 busybox 創建容器

本文為了圖便宜犯了一個錯誤,將容器的掛載數據卷設置成了工程運行時的所在目錄,導致不同環境運行會有些問題,這是個教訓

如果在克隆本工程,運行時出現報錯:找不到 /proc

需要將 busybox 下的內容復制到工程根目錄下的 /opt/busybox,命令如下(壓縮包放到了gitee上,可以使用命令直接下載)

wget https://gitee.com/free-love/docker-demo/attach_files/1048146/download/busybox.tar? dockerDemo git:(main) ? mkdir /opt/busybox ? dockerDemo git:(main) ? tar -xvf ./busybox.tar -C /opt/busybox/? dockerDemo git:(main) ? ls /opt/busybox bin dev etc home proc root sys tmp usr var

實踐文檔

在編寫代碼時,也遇到過不少問題,基本上都對過程進行記錄,代碼相對書中應該是比較完整,如果在編寫過程中遇到問題,可以當做相關的參考

  • 自己動手寫 Docker 系列 – 3.1 構造實現 run 命令版本的容器
  • 自己動手寫 Docker 系列 – 3.2 增加容器資源限制
  • 自己動手寫 Docker 系列 – 3.3 使用命令管道優化參數傳遞
  • 自己動手寫 Docker 系列 – 4.1 使用 busybox 創建容器
  • 自己動手寫 Docker 系列 – 4.2 使用 AUFS 包裝 busybox
  • 自己動手寫 Docker 系列 – 4.3 實現 volume 數據卷
  • 自己動手寫 Docker 系列 – 5.1 實現容器的后臺運行
  • 自己動手寫 Docker 系列 – 5.2 實現查看運行中的容器
  • 自己動手寫 Docker 系列 – 5.3 實現 logs 命令查看容器日志
  • 自己動手寫 Docker 系列 – 5.4 實現進入容器的 namespace,exec 命令
  • 自己動手寫 Docker 系列 – 5.5 實現容器停止
  • 自己動手寫 Docker 系列 – 5.6 實現刪除容器
  • 自己動手寫 Docker 系列 – 5.7 實現通過容器制作鏡像
  • 自己動手寫 Docker 系列 – 5.8 實現容器制定環境變量運行
  • 自己動手寫 Docker 系列 – 6.1 ip 分配管理
  • 自己動手寫 Docker 系列 – 6.2 創建網絡
  • 自己動手寫 Docker 系列 – 6.3 手動配置容器網絡(上)
  • 自己動手寫 Docker 系列 – 6.3 手動配置容器網絡(下)
  • 自己動手寫 Docker 系列 – 6.5 啟動時給容器配置網絡

參考資料

  • 《自己動手寫 Docker》:非常好的書籍,值得一看并實操

總結

以上是生活随笔為你收集整理的自己动手写 Docker 系列文章总览的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。