❶ docker相當於一個Linux上虛擬機嗎可以在docker上放置網站,提供外部訪問嗎
當前,Docker內部使用的是Linux容器技術(LXC),這是運行在與它的宿主機器同樣的操作系統上。這准許它可以和宿主機器共享許多系統資源。它也會使用AuFS作為文件系統,也為你管理網路。
AuFS是一個層狀的文件系統,因此你可以有一個只讀部分和一個只寫部分,然後將二者組合起來。你可以使系統的共同的部分用作只讀,那塊是被所有容器共享,並且給每個容器自己的可寫區域
Mitisky
翻譯於 3年前
3人頂
頂 翻譯得不錯哦!
好吧,讓我們假設你有一個容器鏡像(image)容量是1GB,如果你想用一個完整的虛擬機來裝載,你得需要容量的大小是1GB乘上你需要虛擬機的數量。但使用Linux容器虛擬化技術(LXC)和AuFS,你可以共享1GB容量,如果你需要1000個容器,假設他們都運行在同樣的系統影像上,你仍然可以用稍微比1GB多一點的空間來給容器系統,
一個完整的虛擬化系統得到了分給它的自有全部資源,只有最小的共享。你獲得了更多的隔離,但是這是很龐大的(需要更多的資源)
使用Linux容器虛擬化技術(LXC),隔離性方面有所缺失,但是他們更加輕量,而且需要更少資源。所以你可以輕松運行1000個容器在一個宿主機器上,甚至眼都不眨。試著用Xen來實現那個,我想除非你有一個超級強大的主機,不然我看是不可能的了
Mitisky
翻譯於 3年前
2人頂
頂 翻譯得不錯哦!
一個完整的虛擬系統通常得用幾分鍾去啟動,linux容器虛擬技術(LXC)只要數秒,甚至有時時間更短。
對於每種虛擬系統都有反對者和支持者。如果你希望一個完全隔離的和資源有保障的環境,那麼完全的虛擬機是你的選擇。如果你只希望進程之間相互隔離,並且希望大量運行他們在一個合理大小的宿主機器上。那麼linux容器虛擬技術(LXC)是你的選擇。
❷ 有哪些問題使用docker解決不掉
1 系統方面
docker可以運行各版本的linux,但唯獨windows系統無法直接運行
2進程方面
docker運行進程1的初始化服務需要特權模式,所有root是共享進程的,無法單獨root用戶運行
3 資源方面
無法直接獨占硬體資源,且對單容器網路流量和速度控制目前沒有很好的支撐方案
4 安全方面
docker並不是虛擬機,目前仍然有漏洞可以通過操作docker所在宿主機
5 監控方面
無法監控docker所在硬碟分區,往往對其監控是基於宿主機的硬碟監控。cpu和內存的資源因為是共享指定,不通過壓力測試無法直接監控所使用的cpu和內存資
6 網路訪問
docker無法直接通過內部ip互相訪問,跨宿主機容器訪問需要藉助第三方工具如weave等解決方案
7 host文件
docker容器內的host文件修改後,重啟會消失,因為啟動容器時候host是重新從宿主機載入的。如果要重啟不變,需要在啟動容器時命令指定
8 固定ip
docker默認情況內部ip地址會發生變化,固定ip需要單獨命令指定
9 埠
除非host模式,否則默認docker容器內部的所有埠外部無法直接訪問,需要啟動容器時命令里指定埠映射
另外,啟動容器後再新增埠映射是不允許的,如需要增加可通過iptables的nat間接實現
暫時想到這么多,希望可以幫到你
❸ docker從容器中怎麼訪問宿主機
例如你的docker環境的虛擬IP是192.168.99.100,那麼宿主機同樣會託管一個和192.168.99.100同網段的虛擬IP,並且會是主IP:192.168.99.1,那麼就簡單了,在容器中訪問192.168.99.1這個地址就等於訪問宿主機。
注意,通過192.168.99.1訪問宿主機,等於換了一個ip,如果資料庫或中間件限制了本機訪問或者做了ip段限制,要記得添加192.168.99.1到白名單。
Docker容器運行的時候有 host 、 bridge 、 none 三種網路可供配置。默認是 bridge ,即橋接網路,以橋接模式連接到宿主機; host 是宿主網路,即與宿主機共用網路; none 則表示無網路,容器將無法聯網。
當容器使用 host 網路時,容器與宿主共用網路,這樣就能在容器中訪問宿主機網路,那麼容器的 localhost 就是宿主機的 localhost 。
(3)docker中系統相互訪問擴展閱讀
宿主機和容器通信原理的問題:
考慮重啟速度:在實際的運維過程中,部分場景下,會出現主機卡死,或者docker進程卡死, 這時,最快恢復業務的方法是重啟主機。
容器在主機重啟後,可以自動恢復,因此可以做到在1到2分鍾內快速恢復業務。這一點太重要了,物理機重啟由於需要做各種硬體檢測,重啟時間一般在5到10分鍾, 虛擬機重啟一般在1分鍾以內 , 物理機顯然無法滿足需求。
重建能力很重要:
容器平台經常需要更新操作系統,或者根據需要調整主機規格。
運行一段時間後,發現內存配置偏少了, 需要添加內存。這時候申請一台新的機器加入到集群中,將舊機器下線即可。
運行多年的 ubuntu 12.04 官方已經不再維護, 需要全量替換,工作量相當大。好的方法就是使用全新的伺服器替換舊伺服器。
當發生故障,主機無法恢復時, 直接申請新伺服器加入集群即可。
❹ docker容器連接後可以互相訪問裡面的文件嗎
可以的。容器裡面的文件只能查看。如果想修改,還得通過-volume.
如果相互拷貝,就用 docker cp