国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

進入docker的世界

remcarpediem / 3629人閱讀

摘要:反過來別的上的鏡像,也不能在樹莓派上運行。如果需要找樹莓派專用的鏡像,那就在上搜索或相關就能找到了。有一個叫的倉庫制作了非常多樹莓派專用,可以參考下。樹莓派安裝,最難的在于正確的選擇源和添加,才能找到版本適合的并下載。

最近學習Machine Learning發現好多人都用docker,之前一直聽說但是感覺和自己無關。但是現在發現原來docker是個這么方便的東西,可以跨平臺(不分什么版本的linux,甚至mac和windows也行)運行。所以這里開一篇來記錄學習感受。

參考:Docker 完全指南
參考: Gitbook - Docker — 從入門到實踐

不提那些難懂的術語,大白話就是:
一個Docker就是一個Linux的Live CD系統,跟USB系統一樣,有完整的系統文件目錄和程序。

我們可以在這個與外界隔離的便攜系統里隨便讀寫操作,只是每次進入它時候,都會恢復最開始的樣子,像什么事都沒發生一樣。
我們可以像定制Live CD或WinPE一樣,定制這個小系統里面默認裝什么軟件。一旦定制好了,就是不可更改的,非常穩定。

理解Docker的邏輯

一開始發現很亂很難理解,覺得所有人都把它說的太復雜了。直到后來發現,其實它的運行邏輯很簡單。
實際上,可以把Docker看成是給電腦安裝Linux系統時的Live CD,或者是給Windows用USB安裝系統時的WinPE。這樣會方便理解一點。

回想下自己在給PC或是虛擬機上安裝Linux系統時,都會有個Live CD選項。也是就是你可以什么都不安裝,直接進入系統,所有的工具都能用,所有的軟件都能安裝,所有的配置也可以改。只不過你重啟過后,一切修改的地方都恢復原樣了。

每篇攻略都會提到這三個基本概念:

鏡像 Image

相當于一個系統光盤的ISO鏡像文件,是只讀的。你可以直接進入image中各種操作沒有障礙,感覺就像進入_Live CD_系統了。只是所有操作都會在退出時消失,下次進image時候還是初始的樣子。

容器 Container

就像給"ISO文件"加了一層可讀寫的外衣,所有的變動都會保存在Container里,而image還是image,不會變。就像你可以隨便換衣服,但是身體不會變。

倉庫 Repo

一般指的Dockerhub,就是一個像Github的網站,只不過不是收集代碼,而是收集各種image鏡像。你可以隨意上傳下載各大廠商或個人制作的鏡像。

安裝Docker
Docker分CE和EE兩個版本,一個社區公開免費,一個商業付費。

參考官方:About Docker CE

Ubuntu上安裝Docker

參考官方安裝步驟:Get Docker CE for Ubuntu

準備工作:

#安裝SSL相關,讓apt通過HTTPS下載:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# 添加docker的GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#檢查key是否相符(9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88)
sudo apt-key fingerprint 0EBFCD88

#添加docker的apt下載源
sudo add-apt-repository  "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

#更新源
sudo apt-get update

安裝docker:

$ sudo apt-get install docker-ce

卸載Docker:

$ sudo apt-get remove docker docker-engine docker.io
Mac上安裝Docker

直接下載app:

樹莓派上安裝Docker
樹莓派是基于ARM架構的,和PC不同。所以即使樹莓派上能做一些docker鏡像,也不能在別的PC上運行。反過來別的PC上的docker鏡像,也不能在樹莓派上運行。
如果需要找樹莓派專用的鏡像,那就在Dockerhub上搜索ARMRpi相關就能找到了。
有一個叫Hypriot的倉庫制作了非常多樹莓派專用docker,可以參考下。

樹莓派安裝Docker,最難的在于正確的選擇源和添加GPG-key,才能找到版本適合的docker并下載。這個過程是非常繁瑣且很難有統一方案的。
另外:官方的一鍵安裝版本已經失效了。必須手動操作。

參考另一篇筆記:樹莓派安裝Docker

運行Docker

[站外圖片上傳中...(image-e81557-1548159126389)]

從Image鏡像創建一個Container容器:

# 新建一個Container容器(如果本地有image則直接從它創建,如果沒有則從網上下載)
# 進入docke的shell -t,即進入虛擬的一個系統,有自己的/root文件系統結構

$ docker run -it : 

#如:
$ docker run -it jekyll/jekyll:latest bash

# 為container指定名稱(而不是只用ID來引用)
$ docker run -it --name  

查看已有的:

# 查看已有的images
$ docker images

# 查看已創建的containers
$ docker container ls -a

運行一個已有的Container:

# 先啟動container
$ docker container  start

# 運行(掛載)container,掛載后自動進入容器里的shell
$ docker attach 

# 或者一句話完成(--attach)
$ docker start -a 

刪除已有的:

# 刪除image
$ docker rm 

# 刪除container
$ docker rm 
無需sudo執行docker

為了每次執行docker不需要總是輸入sudo,我們需要為docker創建一個用戶組,并授予權限才行:

# 創建docker用戶組
sudo groupadd docker

# 把當前用戶加入到docker用戶組
sudo gpasswd -a $USER docker

# 更新當前用戶組變動(就不用退出并重新登錄了)
newgrp docker
掛載Host主機上的文件夾
我們肯定不會滿足于docker只訪問自己的小世界里的文件系統(什么數據都沒有),所以有必要讓它能訪問外界Host主機上的一些文件夾。比如我有一個docker是作為下載機用的,那么我肯定得讓它把下載好的東西存到我的主機上,要不然就白下載了。

參考:Docker學習---掛載本地目錄

掛載文件夾是在docker運行鏡像的命令里就指定的(利用-v參數):

$ docker run -it -v : ubuntu64 /bin/bash

#或者作為只讀掛載 (:ro)
$ docker run -it -v ::ro ubuntu64 /bin/bash

注意,掛載的雙方都必須是絕對路徑。

映射Docker里的端口到Host主機上的端口
如果Docker里運行的是Web服務比如Nginx,里面有一個網站,那你必須得把”虛擬機“里的端口映射到外部才能正常看到網頁。

映射是在運行docker命令時指定的,比如把里面的80端口映射到外面的8888端口,命令如下:

$ docker run --name webserver -d -p 80:8888 nginx

然后你在主機上的瀏覽器訪問http://localhost:8888,就可以看到nginx里的網頁了。

Docker鏡像保存更改
直接在鏡像上改動的內容,會在退出時全部消失。但是我們經常需要把這些變動保存下來。

Docker保存這些變動的機制就是——生成另一個只讀鏡像。(-_-!)

雖然正常看來,這不太好吧。但實際上,這很好!
Docker鏡像實際上是非常小的,所以生成另一個鏡像也沒有多費事。而且這種機制保證了每個鏡像的不可隨便修改的性質,這一點就極大的避免了混亂。

Docker保存更改有兩種方式:

docker commit:就像git commit一樣,把每次改動作為一個commit提交,可以追溯歷史

Dockerfile:這是從頭build構建一個鏡像的配置文件,把你想改動的地方(如安裝一個程序)寫成一句bash命令,加到Dockerfile這個文件里,它就會按照你的要求執行所有的命令,然后生成一個新的鏡像。

Commit可以追溯歷史,但是變動了哪些地方是對外界黑箱的。
Dockerfile確實明明白白寫清楚有哪些改變。

所以一般情況下,正式構建一個鏡像,都是用Dockerfile的。

"docker commit" 將變動過的Container保存為鏡像

參考:利用 commit 理解鏡像構成

docker commit命令,可以將容器的存儲層保存下來成為鏡像。換句話說,就是在原有鏡像的基礎上,再疊加上容器的存儲層,并構成新的鏡像。以后我們運行這個新鏡像的時候,就會擁有原有容器最后的文件變化。

慎用docker commit:

由于命令的執行,還有很多文件被改動或添加了。這還僅僅是最簡單的操作,如果是安裝軟件包、編譯構建,那會有大量的無關內容被添加進來,如果不小心清理,將會導致鏡像極為臃腫。
此外,使用 docker commit 意味著所有對鏡像的操作都是黑箱操作,生成的鏡像也被稱為黑箱鏡像,換句話說,就是除了制作鏡像的人知道執行過什么命令、怎么生成的鏡像,別人根本無從得知。而且,即使是這個制作鏡像的人,過一段時間后也無法記清具體在操作的。雖然 docker diff 或許可以告訴得到一些線索,但是遠遠不到可以確保生成一致鏡像的地步。這種黑箱鏡像的維護工作是非常痛苦的。
而且,回顧之前提及的鏡像所使用的分層存儲的概念,除當前層外,之前的每一層都是不會發生改變的,換句話說,任何修改的結果僅僅是在當前層進行標記、添加、修改,而不會改動上一層。如果使用 docker commit 制作鏡像,以及后期修改的話,每一次修改都會讓鏡像更加臃腫一次,所刪除的上一層的東西并不會丟失,會一直如影隨形的跟著這個鏡像,即使根本無法訪問到。這會讓鏡像更加臃腫。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28071.html

相關文章

  • Docker - 通往新世界大門

    摘要:刪除鏡像表示強行刪除是將鏡像保存成文件加載鏡像結語是個好東西,以上僅僅是一些常用基本操作,但它就像通往新世界的大門,為大規模集群化部署提供了可能,以后有空再寫一下容器編排的文章,敬請關注 showImg(https://segmentfault.com/img/remote/1460000014989024?w=1292&h=710); 引言 相信很多技術同學在開發時都會使用虛擬機,配...

    cncoder 評論0 收藏0
  • 容器技術在游戲云應用展望

    摘要:目前,騰訊內部業務運行環境基本全部實現了容器化,在技術大會中,騰訊云高級產品經理劉永峰曾發表演講時代,公有云面臨的挑戰和機遇。本文中劉永峰展望了容器技術在游戲云的應用。 容器技術是一種輕量級虛擬化技術,能夠以很細的粒度,虛擬化獨立的系統運行環境。這就意味著,一臺物理的服務器,或者是一臺云上面的虛擬服務器,能夠同時運行成百上千個獨立的容器。基于游戲行業短平快的鮮明特點, 每一個游戲世界里面,每...

    Lyux 評論0 收藏0
  • Docker正方登場——未來正在遠方……

    摘要:并不是因為它是閃亮的新事物或者它是一些虛構的最佳實踐,而是因為像亞馬遜或者已經在這上面投入了年的心血,他們告訴了我們如何構建真正有規模的系統。截止目前,我們已經部署了由亞馬遜等提供的重量級虛擬化服務器。 周一時候數人云與大家分享了一篇關于Docker的反方言論——《一份Docker的反方辯論——我還是用Heroku好了》,一周之后,同樣的作者,又為Docker正名,寫了一篇正方言論。D...

    waruqi 評論0 收藏0
  • SwarmKit知多少——來自源碼世界深入解讀

    摘要:一個容器起來,能夠對外服務,這時就看下一步的負載均衡服務發現以及編排。它們有不同的應用場景,比如傾向于四層的負載均衡。不單是負載均衡,它同時解決了服務發現和負載均衡兩個點。 今天是數人云容器三國演義Meetup嘉賓演講實錄第二彈。數人云工程師春明為大家奉送了一盤干貨的大餐,讓我們讀讀源碼,深入了解一下SwarmKit的世界吧! 小數前方預警:有大量代碼出現! showImg(htt...

    stefanieliang 評論0 收藏0

發表評論

0條評論

remcarpediem

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<