docker 查看容器_Docker介绍
docker介紹
什么是docker?我們先看一下官方文檔對docker的定義。翻譯一下就是:Docker是一個集開發(fā),發(fā)布和運行應用程序的開放平臺。Docker能夠分離應用和基礎架構,從而可以使得用戶可以快速交付軟件。借助于Docker,用戶可以以管理應用的方式管理基礎架構。通過利用Docker快讀交付,測試和部署代碼的能力,用戶可以大大地減少編寫代碼和在生產環(huán)境中運行代碼的延遲。
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.Docker提供了在一個松散隔離的環(huán)境中打包和運行應用的功能,這個環(huán)境被稱為容器。容器是輕巧的,它們不需要其他額外的管理程序就可以直接運行在宿主機的內核上,同時環(huán)境的隔離性和安全性特性允許在一個給定的主機上可以運行多個容器,而且多個容器相互獨立,互不干擾。
Docker架構
Docker的基礎架構是客戶端-服務器(client-server)模式。在Docker中的主要組件有守護程序進程(daemon process)[服務器(service),一種長期運行的程序],命令行界面客戶端(command line interface client, CLI client)和指定程序與守護進程通信并指示其操作的接口REST API。CLI 使用接口docker REST API通過腳本或者直接CLI命令控制docker守護進程或者與docker守護進程進行交互。守護進程(daemon)創(chuàng)建和管理docker對象,比如鏡像(images),容器(contains),網絡(network)和數據卷(data volumes)。
Docker客戶端和Docker守護進程可以在同一系統(tǒng)上運行,也可以將Docker客戶端連接到遠程的Docker守護進程。Docker客戶端和Docker守護進程在UNIX套接字或者網絡接口上使用REST API進行通話,Docker守護進程用來完成docker容器的構建,運行和分發(fā)等工作。
- docker守護進程偵聽docker API的并且管理docker對象,例如圖像,容器,網路和數據卷。守護進程也可以與其他的守護進程進行通信來管理docker服務
- docker客戶端是docker用戶與Docker交互的主要方式??蛻舳藢⒚畎l(fā)送到守護進程,守護進程執(zhí)行相應的命令。Docker客戶端可以與多個守護進程進行通信。
- docker倉庫用來儲存docker倉庫。Docker hub是一個任何人都能夠使用的公共倉庫。
- docker對象
- 鏡像是一個帶有創(chuàng)建Docker容器的說明的只讀模板。用戶可以docker倉庫中他人已經創(chuàng)建好的鏡像,也可以創(chuàng)建Dockerfile文件來編寫創(chuàng)建鏡像的指令。Dockerfile中的每條指令都會在鏡像中創(chuàng)建一層。當用戶更改Dockerfile并且重新創(chuàng)建鏡像的時候,只有更改的層需要重建,其它層保持不變。通常情況下,一個鏡像可以基于另一個鏡像進行構建。假設用戶現(xiàn)在擁有一個GPU版本的pytorch環(huán)境基礎鏡像,然而項目還需要一些額外的庫文件,比如opencv庫文件,那么就可以基于基礎鏡像,再安裝相應的opencv庫文件 ,就可以構造項目所需要的鏡像了。
- 容器是一個鏡像的可運行實例。用戶可以通過API或者命令行界面創(chuàng)建,啟動,停止,移除和刪除一個容器。默認情況下,容器與容器以及宿主機之間的隔離度相對較好,用戶可以控制容器的網絡,存儲和其他基礎子系統(tǒng)與宿主機的隔離程度。
docker 和虛擬機
dokcer和虛擬機docker可直接運行在宿主機上,與宿主機共享內核。虛擬機是指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。創(chuàng)建虛擬機時,需要將實體機的部分硬盤黑盒內存容量作為虛擬機的硬盤和內存容量。每個虛擬機都有獨立的CMOS、硬盤黑盒操作系統(tǒng)。 -----<虛擬機>百度百科編寫docker vs VM
命名空間namespaces
docker使用命名空間namespaces技術提供獨立的工作區(qū)間。當用戶運行一個容器的時候,Docker就為這個容器創(chuàng)建一系列的命名空間。這些命令空間提供了層的隔離性。
- pid命令空間:進程隔離(PID:進程ID)
- net命名空間:網絡接口管理
- ipc命名空間:管理進程間通信資源的訪問
- mnt命名空間:管理文件系統(tǒng)掛載點
- uts命名空間:隔離內核和版本標識符
聯(lián)合文件系統(tǒng)
聯(lián)合文件系統(tǒng)(Union File System)通過創(chuàng)建層來實現(xiàn)聯(lián)合掛載。Docker使用聯(lián)合文件掛載和copy-on-write技術為容器提供組成容器的塊,這也是容器輕巧和快速的原因。
copy-on-write是一種共享和復制文件能夠達到最大效率的技術。如果一個文件或者一個文件夾存在于鏡像的最底層,其它層(包括可寫層)需要對其進行讀訪問,那么就可以使用這個存在的文件。如果其他層首次需要修改這個文件(當構建鏡像時或者運行容器時),那么這個文件被復制到此層并被修改。這樣能夠最小化I/O和后續(xù)每層的大小。
當使用docker pull 從倉庫中拉取一個鏡像時,或者當你從一個當地并不存在的鏡像中創(chuàng)建容器時,每一層單獨地被拉取,存儲在Docker的當地存儲區(qū)域,在linux主機上,則是/var/lib/docker。
從上圖可以看出,拉取鏡像時,是分層拉取,ubuntu18.04總共有三層。docker inspect 查看其鏡像信息,在Layers屬性中,包含三層的sha256信息。
鏡像和容器
一個docker鏡像從一系列層中構建,在Dockerfile中,每一層表示一條指令。除了最后一層,其它層都僅僅是可讀的。這些層按照棧的格式堆疊,每一層互不相同。當用戶創(chuàng)建容器的時候,用戶僅僅在最高層添加一個可寫的層,這一層被稱為“容器層”。在運行的容器中進行的改變,例如對文件的增刪改查,都僅僅寫入這個可寫的容器層。
鏡像和容器的最主要區(qū)別在于最頂層的可寫層。添加新文件,更改存儲可寫成的數據等等都被寫入到這個容器中。當容器被刪除,那么這個可寫層也隨之被刪除。這個容器基于的鏡像保持不變。 基于此,基于一個鏡像就可以構造多個容器,并且每個容器都有自己的數據區(qū)域。
這張圖來自于官方文檔,以ubuntu15.04作為例子Docker常用命令
# 鏡像有關命令 docker image pull # 拉取鏡像 docker images # 查看鏡像 docker rmi image-id/鏡像名字 # 刪除某個鏡像 docker rmi $(docker images | grep -v RESPOSITORY | awk '{print $3}') # 刪除所有鏡像 docker search 鏡像名字 # 搜索某個鏡像 docker build -t 鏡像名稱:版本 . # 構建鏡像,注意后面的 .# docker命令 docker -v # 查看docker版本 docker info # 查看docker系統(tǒng)信息# 容器有關命令 docker ps -a # 查看所有容器列表 docker ps -a -n=10 # 查看10個容器 docker inspect 容器ID # 查看某個容器的信息 docker rm 容器ID # 刪除某個容器 docker rm $(docker ps -a) # 刪除所有容器 docker stop 容器ID # 關閉運行中的某個容器 docker start 容器ID # 啟動某個容器但是不進入 docker start -i 容器ID # 啟動并進入某個容器 docker restart 容器ID # 重啟某個容器 docker attach 容器ID # 進入一個運行中的容器 docker run -it 鏡像名稱:版本 # 啟動容器并且以交互式進入容器參考
Docker Documentation?docs.docker.comdocker中文社區(qū),docker幫助,docker手冊,docker教程,docker安裝手冊 - docker中文社區(qū)?www.docker.org.cnDocker Blog - News, Education & Version Updates?www.docker.com 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的docker 查看容器_Docker介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 功能机王者归来 诺基亚推出全新翻盖手机:
- 下一篇: python 批量下载网页图片_Pyth