docker學習筆記

2021-09-12 11:38:37 字數 2382 閱讀 4668

映象:docker 映象可以看作是乙個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。

容器命令:

docker run  --name=x  y//run 是啟動乙個映象y成為docker容器,並起名為x

例項:docker run --name=container01 -i -t ubuntu /bin/bash  //解釋:啟動乙個ubuntu映象並且起別名為container01 -i是能夠輸入 -t是tty終端模擬, /bin/bash  是啟動ubuntu的乙個命令列

docker ps -a -l  //展示所有容器 -a 全部容器包括未執行的,-l(lastest)顯示最近的容器
docker inspect xx  xx可以是container id  也可以是run 映象時起的別名

docker start  -i xx  啟動已經建立過的容器xx

docker rm xx   刪除xx容器,xx容器必須是沒有執行的容器

守護式容器:就是在後台一直執行的容器,不像之前的互動式容器。兩種容器可以相互轉換

一些基本操作

當我們建立了乙個互動式容器後

使用ctrl+p  --> ctrl+q  將其轉為守護式容器,會在後台一直跑

如何回到互動式容器:

docker attach xx(容器名稱)

直接啟動乙個守護容器:

docker run -d

docker log   //檢視乙個容器的日誌

docker top xx(容器名稱)//檢視乙個執行中容器的程序

docker exec  (-t) (-i)  //為執行的容器啟動乙個新的程序

docker stop //等待容器執行完,進行關閉

docker  kill  //不等待容器的執行,直接關閉

檢視幫助命令

例: man docker run ******xx

這四種對映模式:

第一種是開放docker的80埠,宿主機的對應埠為隨機

第二種是開放docker的80埠,宿主機的埠為對應的8080

第三種為指定docekr80埠和宿主機id,埠號隨機(經過測試這個方法並不行)

第四種為指定docker80埠,宿主機ip位址和宿主機埠

大寫p是表示開放docker的所有埠

注意:當我們結束乙個容器時,這個容器啟動的程序也停止,如果使用start重啟仍不會啟動之前啟動的服務,我們就需要使用exec命令來重啟,像剛才的例子容器重啟後,nginx會被關閉,我們需要使用 docker exec web(容器名稱) nginx

宿主機有乙個守護程序,客戶端也就是我們起的ubuntu的bash命令,也可以理解為docker容器,當我們向客戶端執行操作時,客戶端會向服務端守護程序發起命令,服務端完成操作後返回相應的結果給客戶端。

from:from  //指定要執行的映象,這個映象時候後面所有命令的基礎映象,必須是非注釋指令的第一條語句

maintainer: maintainer xx //xx就是作者資訊

run :後面跟我們真正要執行的語句,他執行的命令是我們執行時的命令

expose: expose xx  後面跟執行該映象的容器使用的埠

cmd命令:它執行的命令,是構建時的命令,如果run啟動乙個容器,run後的命令會覆蓋cmd裡的命令

entrypoint:也是構建時需要執行的命令,但是不會被覆蓋,如果cmd後面跟的是乙個引數,那麼可以和entrypoint結合,entrypoint是要執行的語句,cmd後加引數組合的模式  ,只有最後一條生效

dockerfile中可以有多條cmd命令,但只是最後一條有效

每執行一條命令就會新生成乙個映象,這個映象會有乙個id,並且會構建乙個容器,如果執行了下面的命令,就會刪除這個容器,並且在剛才的映象上再建乙個映象生成乙個id,以此類推完成建立,注意:刪除之前的中間層容器並不會刪除之前的中間層映象,我們可以使用中間層的映象id進行啟動來除錯錯誤

因為上面的步驟很繁瑣,因此docker使用了快取技術,啟動第二次時會使用快取為基礎構建,也可以關閉快取,也可以再dockerfile中設定快取時間

docker學習筆記

1 docker依賴於linux核心,無法直接安裝在windows環境中,否則需要安裝docker toolbox 2 相關操作 docker create 建立乙個容器但是不啟動它 docker run 建立並啟動乙個容器 docker stop id 停止容器執行,傳送訊號sigterm doc...

Docker學習筆記

一 docker是什麼 docker是乙個開源的引擎,可以輕鬆的為任何應用建立乙個輕量級的 可移植的 自給自足的容器。就相當於書包可以裝書,水杯可以盛水。二 docker解決了什麼問題 我本地沒有問題啊 本地和線上的環境不一致問題,哪個哥們又寫死迴圈了 其他專案的出錯不影響你本身的專案 雙十一伺服器...

docker學習筆記

1.怎麼給執行中的docker容器新增新的埠 解決 1 獲得容器ip docker inspect container name grep ipaddress 2 iptable埠 將容器的8000埠對映到主機的8001埠 iptables tnat adocker ptcp dport 8001 ...