映象: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 ...