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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

docker 入门教程指南

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 docker 入门教程指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于 docker

今天云平臺的同事提到, 現在的運維就是惡性循環, 因為大家都在申請機器, 顯然的是, 大家申請機器都是按照自己的峰值申請的, 而為了保證突發狀況, 如 ddos, 雙11 等, 申請者甚至會兩倍于自己的峰值去估算自己的服務. 由于資源緊張, 云平臺會對其削減, 因為云平臺也要為公司減少運維成本, 可能原來申請10臺機器最后變成給5臺, 而最終有經驗的申請者會直接申請20臺, 然后等削減成10臺(正如魯迅所說, 如果不說把屋頂掀了, 中國人根本不會同意在屋里裝個窗戶)

申請容易而回收難, 云平臺并沒有能力去監控每臺機器的使用量, 就算他們找到使用資源大大浪費的機器, 他們也難以說服擁有機器的團隊回收其機器, 最終, 大量超高配的機器(比如64g 內存, 16核), 就貢獻著幾百的 qps, 造成極大的浪費

也許自動化運維是每個云平臺的目標, 將運維自動化, 私有化, 最后公有化, 而當今大熱 docker 就是解決運維困境的一劑良藥

什么是 docker? 為了更好理解, 你可以直接和別人說它是虛擬機, 實際上 docker 并不是虛擬機, 它做的是 linux 的隔離, 但它的隔離做的如此之真實以至于讓人覺得自己擁有可以一臺完整的 linux 系統

那 docker 和 虛擬機具體是什么區別呢, 虛擬機在底層模擬出各種硬件, cpu, 硬盤之類的, 而 docker 是在軟件層面給資源分組, docker 性能無限接近原生, 因為 docker 用的就是系統自己的進程, 而虛擬機做的再好, 也做不出原生的感覺

docker 的隔離技術源自于 Linux 容器 LXC(linux container), 聽起名字就知道, 這和沙箱應該差不多, 可以把東西分開放, 也就是隔離的意思, 甚至可以在某些倉庫中看到 docker 的名字叫 lxc-docker

而 LXC 又是基于 cgroup 的 namespace, chroot 等, 由于我并不懂這些, 但 namespace 可以幫助我們理解, 就像我們寫程序一樣, 這是一個命名空間, 與其他 namespace 相區別

cgroup 對于 docker 是至關重要的, 了解它才會覺得 docker 不神秘, cgroup 全稱為 control group, 是 linux 內核提供的功能, 簡單的說, 它的作用就是把系統運行的進程按用戶自定義的群組區分, 也就是說 一個 docker, 一個 group

cgroup 有限制使用資源的能力

  • blkio -- 這個子系統為塊設備設定輸入/輸出限制,比如物理設備(磁盤,固態硬盤,USB 等等)

  • cpu -- 這個子系統使用調度程序提供對 CPU 的 cgroup 任務訪問

  • cpuacct -- 這個子系統自動生成 cgroup 中任務所使用的 CPU 報告

  • cpuset -- 這個子系統為 cgroup 中的任務分配獨立 CPU(在多核系統)和內存節點

  • devices -- 這個子系統可允許或者拒絕 cgroup 中的任務訪問設備

  • freezer -- 這個子系統掛起或者恢復 cgroup 中的任務

  • memory -- 這個子系統設定 cgroup 中任務使用的內存限制,并自動生成由那些任務使用的內存資源報告

  • net_cls -- 這個子系統使用等級識別符(classid)標記網絡數據包,可允許 Linux 流量控制程序(tc)識別從具體 cgroup 中生成的數據包

  • ns -- 名稱空間子系統

看到上面的 cgroup 配置屬性真的是恍然大悟, docker 成為當今最熱的運維神器一點都不奇怪, 它簡直就是為了運維而生,?彈性計算,?資源報表,?暫停服務,?資源限制?根本不在話下

入門教程

幫 docker 吹了這么多牛, 得說說具體怎么用

安裝

不管你是什么系統, 你應該首先嘗試腳本一鍵安裝, 也是官方推薦的方法

sudo curl -sL https://get.docker.io/ | sh

如果你很不幸的失敗了, 那你也許是苦逼的 centos 或者 redhat 使用者, 那建議你使用

yum search docker

運氣好的話你可以找到一個叫 docker.io 的程序, 沒錯就是他

如果再不行, 恩, 那就只能上官網看英語安裝文檔了

不得不承認我至今都沒有成功的從源碼安裝過

運行

docker 也需要一個 daemon(后臺), 所以首先要啟動 docker 服務(不知為啥很多教程根本不提這一步)

sudo docker -d # 或者 sudo docker -H tcp://127.0.0.1:4243 -d

如果沒報啥錯誤, 并且?docker images?也能看到一個列表目錄而不是報錯, 那少年你一定是成功了

docker 依賴系統模塊 bridge, 可以用?modprobe bridge?來查看有沒有

阿里云默認是啟動不了 docker 的, 輸入?route del -net 172.16.0.0 netmask 255.240.0.0?可解決

使用

使用前你不得不了解兩個概念, 一個叫 image, 一個叫 container, 對初學者來說這倆可能意思有點接近或者混淆, 看這些比喻也許你一下子就明白了, image 是只讀的模板, 用來生成你需要的 container, 而 container 也可以變成新的 image

使用 docker 就是使用 container, 而 container 來自于 image, 因此你需要先有個 image, docker 的操作像極了 git, 你可以這樣下載一個 image

docker pull ubuntu

這樣你就有了一個 ubuntu image, 可以用?docker images?看到這個新的 image

使用這個 image, 可以向它發送一個命令, docker run ubuntu echo hello docker

當然, 沒人會這么無聊, come on! 我們需要像虛擬機一樣使用它, 搭建屬于我們自己的環境, 自己的系統, 把搭建完成的 container 變成一個新的 image, 這才是我們的目標!

docker run -it ubuntu /bin/bash

沒錯, 這條神奇的命令終于讓 docker 變得有趣起來, 它讓我們像 ssh 進入虛擬機一樣操作, 翱翔

退出可以用 exit, 或者 CTRL + D

可惜的是, 一旦退出, container 不在維持了, 我們不可能一直在 container 中不出來, 但我們也要保持 container 的狀態, 那怎么辦呢

docker run -itd ubuntu /bin/bash # 后臺執行 containerdocker ps # 找到后臺執行的 container id 或昵稱docker attach <container id> # 重新 attach 這個 container

注意, 這時候如果 exit 依然會終止這個 container, 要想 detach 跳出一個 container, 你需要使用?CTRL + P, CTRL + Q, 這樣我們就又能用 attach 重新進入 container, 真是來去自如

也許你不了解這些命令參數的意思, 不要緊, 本文并不準備當一個解釋參數的大媽, docker 像 git, svn 那樣可以用?docker help <command>?來非常方便的查看這些幫助

覺得實用就趕緊試試吧!


from:?http://bg.biedalian.com/2014/11/20/docker-start.html

總結

以上是生活随笔為你收集整理的docker 入门教程指南的全部內容,希望文章能夠幫你解決所遇到的問題。

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