【笔记】docker核心概念和使用 docker命令
介紹
在Linux服務器部署一個單體JavaWeb應用,一般會在服務器安裝Tomcat、MySql、Redis、JDK等相關環境或軟件,安裝完軟件之后需要進行相關配置,最后把項目打成War包,放在服務器進行部署。這樣有幾個缺點,那就是面對黑糊糊的命令行,如果想部署成功需要一定的Linux知識儲備,再者就是如果我們想在另一臺服務器上部署,也需要重復剛剛的下載軟件、配置環境、部署,極為繁瑣。而Docker作為一門容器技術,很好的解決這一問題。
我們只需要在一臺Linux機器上完成軟件的安裝和配置,然后把他們做成鏡像,MySQL做成MySQL-Docker鏡像,Tomcat做成Tomcat-Docker鏡像。當我們在另一臺Linux服務器
安裝的時候只需要安裝Docker這個軟件,然后把鏡像拿過來運行即可,這個鏡像就成了一個容器。容器啟動是非常快速的。類似windows里面的ghost操作系統,安裝好后什么都有了,這樣就降低了對linux操作的難度。
原理
:
和宿主機共享內核,所有容器運行在容器引擎之上,容器并非一個完整的操作系統,所有容器共享操作系統,在進程級
進行隔離
根據操作系統的不同,可以通過shell或者遠程桌面進行
不同與傳統容器,docker早起基于LXC,后來基于自研的libContainer,docker對于傳統容器做了許多優化,如下:
Docker采用了C/S架構,分為Docker客戶端(Docker可執行程序)與Docker守護進程,Docker客戶端通過命令行和API的形式與Docker守護進程進行通信,Docker守護進程則提供Docker服務。因此,我們操作的各種docker命令實際上都是由docker客戶端發送到docker守護進程上去執行。我們在構建
一個鏡像時,不可避免的需要將一些本地文件拷貝到鏡像中,用戶在構建鏡像時,需要指定構建鏡像的上下文路徑(即前文的.),docker build在獲得這個路徑之后,會將路徑下的所有內容打包,然后上傳給Docker引擎
docker應用場景
Docker的核心概念
docker鏡像(Images):Docker 鏡像是用于創建Docker 容器的 模板。
docker容器(Container):容器是獨立運行的一個或一組應用。
docker客戶端(Client):客戶端通過命令行或者其他工具使用 Docker API 與Docker
的守護進程通信
docker主機(Host):一個物理或者虛擬的機器用于執行 Docker 守護進程和容器
docker倉庫(Registry):Docker 倉庫用來保存鏡像,可以理解 為代碼控制中的代碼倉
庫,Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用
docker容器查看命令
docker中的容器就是一個輕量級的虛擬機,是鏡像運行起來的一個狀態
如果需要查看所有容器,則可以通過docker ps -a命令查看
使用docker ps -l可以查看最近創建的容器
可以使用docker ps -n=XXX來查看最新創建的n個容器
如果開發者需要既創建又啟動容器,則可以使用docker run命令。docker run命令又可以啟動兩種不同模式的容器:后臺型容器和交互型容器,顧名思義,后臺型容器就是一個在后臺運行的容器,默默的在后臺執行計算就行了,不需要和開發者進行交互,而交互型容器則需要接收開發者的輸入進行處理給出反饋。對于開發者而言,大部分情況下創建的都是后臺型容器,不過在很多時候,即使是后臺型容器也不可避免的需要進行交互,下面分別來看。
docker run --name nginx1 -d -p 8080:80 nginx
–name含義和上文一樣,表示創建的容器的名字,-d表示容器在后臺運行,-p表示將容器的80端口映射到宿主
機的8080端口,創建過程如下圖:
首先依然會去本地檢查,本地沒有相應的容器,則會去Docker Hub上查找,查找到了下載并運行,并且生
成了一個容器id。運行成功后,在瀏覽器中輸http://localhost:8080就能看到Nginx的默認頁面了
docker run --name ubuntu -it ubuntu /bin/bash
-it參數,i表示開發容器的標準輸入(STDIN),t則表示告訴docker,為容器創建一個命令行終端。執行結果如下
docker stop命令可以終止一個容器,如下:
可以通過docker rm命令刪除一個容器。刪除容器時,只能刪除已經停止運行的容器,不能刪除正在運行的容器
容器也可以批量刪除,命令如下:
docker rm $(docker ps -a -q)
docker ps -a -q會列出所有容器的id,供rm命令刪除。
如下命令也支持刪除已退出的孤立的容器:
docker container prune
docker attach
依附容器這個主要是針對交互型容器而言的,該命令有一定的局限性,可以作為了解。
通過docker inspect命令查看容器的詳細信息,這些詳細信息包括容器的id、容器名、環境變量、運行命令、主機配置、網絡配置以及數據卷配置等信息
使用docker top命令可以查看容器中正在運行的進程,首先確保容器已經啟動,然后執行docker top命令
如果要查看日志,則可以使用docker提供的docker logs
使用export命令可以導出容器,具體操作如下:
本案例中我首先創建一個nginx容器,然后啟動,啟動成功后,將本地一個index.html文件上傳到容器中,修改nginx首頁的顯示內容。具體操作步驟如下
容器導入成功后,就可以使用docker run命令運行了。
可以通過docker images命令查看本地所有鏡像
鏡像可以通過docker rmi命令進行刪除,參數為鏡像的id或者鏡像名,參數可以有多個,多個參數之間用空
格隔開。如下:
鏡像
鏡像的體系結構
鏡像的體系結構
鏡像的最底層是一個啟動文件系統(bootfs)鏡像,bootfs的上層鏡像叫做根鏡像,一般來說,根鏡像是一個操作系統,例如Ubuntu、CentOS等,用戶的鏡像必須構建于根鏡像之上,在根鏡像之上,用戶可以構建出各種各樣的其他鏡像。
從上面的介紹讀者可以看出,鏡像的本質其實就是一系列文件的集合,一層套一層的結構有點類似于Git。
通過docker run命令指定一個容器創建鏡像時,實際上是在該鏡像之上創建一個空的可讀寫的文件系統層級,
可以將這個文件系統層級當成一個臨時的鏡像來對待,而命令中所指的模版鏡像則可以稱之為父鏡像。父鏡像的內容都是以只讀的方式掛載進來的,容器會讀取共享父鏡像的內容,用戶所做的所有修改都是在文件系統中,不會對父鏡像造成任何影響。當然用戶可以通過其他一些手段使修改持久化到父鏡像中。
總結
以上是生活随笔為你收集整理的【笔记】docker核心概念和使用 docker命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法学习笔记】 图(四)用优先级队列优
- 下一篇: 【练习】2021下半年数据结构刷题笔记和