天天看點

關于初學者對于docker的一些。。了解

有錯希望指正。。

我的目的:能一鍵部署需要的服務和功能

現在有了目的。。其實是朋友告訴我這東西可以快速部署環境覺得比我那樣一次次搞友善

然後我就是一個0基礎的小白新手了。。反正我也是剛剛畢業需要學習這些東西雖然公司隻是傳統行業用不上。。但是總會跳到我想要的網際網路環境的。。

首先,我知道了docker的鏡像每次啟動都會産生一個容器,就算是同一個鏡像啟動兩次也會産生兩個容器。。而且在前一個容器的操作關閉後再次打開這個鏡像。。又還原了。。想儲存你對容器的修改就要用到docker commit <容器id> <儲存成的鏡像名>(去尖括号),,,這樣你就把已經操作的容器儲存成新的鏡像了。。然而那兩個容器還在。。你可以删掉~舊的鏡像沒需求也可以删掉。。下次啟動新的就有你想要的東西了。。

上面那段直接把完整一個基礎流程寫出來了。。下面才是真的基礎部分。。比如。。pull。。安裝啟動啥的毫無技術含量自己搞搞就好了。

這個pull我經常看到有人說。。pull不下來。。網速不行老斷之類的。。我首先聽人說了個這個daocloud的加速器。。我就去看了一下。。然後當時沒注意什麼加速器1.0和2.0。。就直接安裝上了。。速度是很快。。而且可以直接把你的本地的測試機之類的直接連上他的平台進行一鍵管理。。看上去很不錯。。但是他貌似取代了本來的docker指令。。因為他的pull變成了dao pull。。。本來是docker pull。。而且dao下來的鏡像不能用docker run。。當然也有可能是我自己的問題。。反正種種問題沒法用下去了。。而且我為了還原回去。。就把docker卸了重裝了一次。。

然後我用了阿裡雲的開發者平台的加速器。。那個好吧貌似沒啥用。。畢竟網絡環境不是特别好。。最後我又回到了daocloud。。原來有個加速器1.0。。這次沒啥問題了。。也能pull了。。隻不過這個鏡像還是官方那下到的。。

然後新的問題來了。。一開始隻是最普通的docker pull centos這種雖然下了一個很标準的centos。。但是不知道是什麼版本裡面有什麼的鏡像。。是以有個指令docker search <想要的鏡像名> 這個可以查詢想要的鏡像比如。。輸入centos7.2就可以出來一些名字裡帶有這個鏡像。。你就可以在裡面選擇一個自己想要的pull了

現在有了鏡像了。。就可以檢視一下了。。就是docker images。。然後run起來~~就有各種參數了。。我也就知道幾個用得上的。。我用得上的。。比如。。-it。。查的說的是什麼互動。。然後就是啟動以後能直接進入到容器内。。但是隻是普通的鏡像可以。。因為有些用dockflie建立的鏡像是比較特殊的可能進不去。。進去的話exit就退出來了。。但是容器也停止了。。

然後就是--rm這裡是兩個-這個是退出容器或者容器停止了他就被删除了。。不會儲存。。好多人用docker ps看不到容器就覺得沒有了。。但是硬碟越來越小。。你需要docker ps -a這個可以看到全部。。你會發現很多停止了的容器其實還在。。因為他們還能再次start。。。沒必要的就删掉了。。一些什麼删除所有。。或者删除所有停止。。網上都能搜到。。我隻想寫個流程和一些我遇到的問題。。不想寫那些普遍的東西

然後參數完了就是鏡像名。。可以寫名字可以寫id。。我比較喜歡id。。因為有些名字比id還長。尤其是第三方庫下的鏡像。。最後可以加一些映射。。可以是-p的端口映射。。比如 docker run ql3k24n24kj324n -p 80:8080這個可以把容器内的8080端口映射到主控端的80端口。。然後外面通路主控端的80端口就能通路到容器内的8080。。。這個好友善的。。容器裡的tomcat都不用配置預設端口了。。再就是目錄映射就是把本地的目錄映射到容器裡。。這個其實就是通用了。。在容器裡改這個目錄的檔案。。主控端就跟着變。。反過來也一樣。。貌似是這樣。。我也不是很清楚其實。。畢竟用不上。。這個可以做容器内有資料庫的情況使用。。因為就算容器關閉了這個資料也是在的~~

然後如果想進入容器但是exit不關閉容器就要run的時候不要加-it。。用exec指令進入容器。。它exit的時候不會關閉容器隻是單純的退出。。參數大緻和run差不多。。。隻不過輸入的id是容器id不是鏡像id。。比如。。docker exec -it 324jk234n2j3k4 。。這個容器id如果不是很多的話。。稍微輸入幾位tab一下就好了。。

再就是我在pull到一些個人上傳的鏡像就是我之前說的那種用dockerfile建構的鏡像。。這種鏡像比較特殊。。比如我之前下到一個帶ssh并套了log4j的鏡像。。完全沒法用普通的run加-it參數進入。。隻能用ssh進入。。然後我也不知道怎麼。。反正我ssh也進不去。。。還有一個是啟動目錄報錯。。他設定的那個目錄可能是在特殊情況下用的吧。。反正我進不去。。我就想用普通的啟動目錄就是/bin/bash進去發現容器的目錄是在他的路徑後面加入的這個路徑。。後來看了dockerfile說是一個設定的cmd基礎值。。再輸入的值也隻是加在這個上面不會替換掉。。反正種種原因我就覺得還是要自己搞鏡像。。然後找個地方存起來。。

然後我就pull了一個普通的centos鏡像。。發現。。沒有service。。沒有systmed。。說是一個bug要7.2以後的才修複。。而且要換啟動路徑。。這塊我一直不是很明白希望大神指點。。

最後我還是換了6.8的。。這個雖然沒有service。。但是可以用腳本start。。但是一開始發現。。我yum的軟體呢!怎麼沒了。。!再yum還能下!再yum還能下。。。然後我發現進入鏡像的地方是/不是root代表的~。。。不知道這塊怎麼回事。。直接cd到~再yum這下靠譜了。。有了軟體了。。也可以在init.d目錄下用start啟動軟體了。。然後這塊也就告一段落了。。

最後就是想找個第三方庫存一下。。以後調用這個位址就能直接在伺服器下載下傳這個鏡像并且run起來。。找了不少。。daocloud。。阿裡雲。。還有網易蜂巢。。反正主要是我不是很了解。。是以也不知道怎麼搞。。最後有人告訴我是我選錯了建立的鏡像庫的類型。。我選的是dockerflie版的庫是以肯定沒法把本地鏡像上傳上去了。。然後我選了本地版。。他就給了一些很細緻的上傳方法。。我就發現原來docker官方對第三方庫的支援非常好的。。隻是在docker login指令後面加一些參數然後最後加上第三方庫的連結位址就可以了。。。反正其實很友善的。。下載下傳也一樣。。

目前我就做到這了。。然後在看看dockerfile了。。這東西我覺得也很重要。。。

然而我也隻是學了一些皮毛的東西。。和一些遇到的實際可能都不算問題的問題吧。。。希望指正錯誤和幫我解決一下我說道的問題。。。