宿主機->大海
docker->鯨魚
容器->貨櫃
docker為什麼會出現
開發 vs 運維
乙個**,在開發的機器上能夠正常執行,而把**交給運維後,在運維的機器上不能執行。這是由於開發和運維的環境不同,那麼如何解決這個問題呢?
ans: 我們不再單純把**給運維,而是把我們的**加上各種中介軟體,系統,環境,配置,依賴等各種東西打成乙個映象,直接把映象給運維,運維就可以直接執行。每個軟體就是乙個貨櫃,相互隔離。乙隻鯨魚就是乙個映象。
稱之為:一次封裝,到處執行!!!
就像是寵物店買的小金魚,你直接把金魚拿回來放到自己家的魚缸裡,金魚活不成,金魚只能在原來的魚缸裡面活,所以就直接把魚缸也一起買來。
docker是什麼
解決了執行環境和配置問題的軟體容器,方便做持續繼承並有助於整體發布的容器虛擬化技術。
docker和虛擬機器的區別
客戶端通過守護程序來操作docker容器
這個就行
curl -ssl | sh
配置阿里雲映象加速
從阿里雲映象服務獲取加速位址
/etc/docker/daemon.json配置如下
聯合檔案系統
就像是乙個花卷一樣,可以把檔案一層一層往上疊
docker映象的基礎
對外只暴露乙個檔案系統
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-dqg6mo9o-1601886843333)(
映象載入原理 && centos映象為什麼這麼小?
映象就是乙個小型精簡的linux
linux啟動的時候需要bootfs
來進行引導
rootfs
是具體的發行版系統
bootfs
可以共用,所以映象的centos只需要rootfs
,所以很小
為什麼docker中的tomcat這麼大?
如下,一層一層包起來
那麼檔案大小是如何計算?共享的算在內嗎?
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-s1jhi9rz-1601886843340)(
為什麼docker要採用這種分層結構
docker中映象的每一層都可以被共享
docker映象的commit
docker commit -a="zs" -m="some changes" 容器id 新名字:tag
docker中如何進入容器中的資料夾
docker exec -it 容器id /bin/bash
docker中如何執行tomcat?
docker run -it -p 8080:8090 映象id
->互動執行
docker run -d -p 8080:8090 映象id
->後台執行
docker中如何修改tomcat中的檔案?
在容器中不可以使用vi去編輯檔案,如果想修改配置檔案可以在容器外部修改然後複製到容器之中
docker cp 本機檔案 容器名:資料夾
注意這個資料夾要全,因為乙個容器就是乙個小的linux
映象修改後要重新commit嗎?
要,修改後需要提交才能儲存
將docker中產生的資料持久化,類似於redis的rdb和aof,就相當於在主機和容器之間進行繫結
也可以實現容器間的資料共享
如何在宿主機和容器之間進行資料繫結?
通過命令
docker run -it -v 宿主機下絕對路徑:容器下的絕對路徑 映象名
docker run -it -v /host:/container 831691599b88
docker run -it -v /host:/container:ro 831691599b88
–>如果是ro的話代表唯讀,此時容器中無法進行修改
通過dockerfile
特徵宿主機和容器之間的資料會共享,更新,保持一致
容器停止退出後,主機修改後資料依然同步
it -v /host:/container:ro 831691599b88`–>如果是ro的話代表唯讀,此時容器中無法進行修改
通過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 ...