DOCKER的相關內容

2022-09-20 15:06:14 字數 4139 閱讀 2036

1.什麼是容器?

容器是對程序進行封裝隔離,屬於作業系統層面的虛擬化技術。由於隔離的程序獨立於宿主和其它的隔離的程序,因此也稱其為容器。簡單地說,乙個容器包含了完整的執行時環境:除了應用程式本身之外,這個應用所需的全部依賴、類庫、其他二進位制檔案、配置檔案等,都統一被打入了乙個稱為容器映象的包中。通過將應用程式本身,和其依賴容器化,作業系統發行版本和其他基礎環境造成的差異,都被抽象掉了。

2.虛擬機器對容器

傳統無力伺服器和虛擬機器作業系統本身占用一定資源,cpu 記憶體利用率長期低於40%,存在大量浪費。容器進行了進一步的封裝,從檔案系統、網路互聯到程序隔離等等,極大的簡化了容器的建立和維護。使得 容器技術比虛擬機器技術更為輕便、快捷。

3.傳統部署方式

開發交付的是**安裝包,安裝包對執行環境依賴有嚴格要求,開發和生產環境的不一致會隨著應用的複雜性而加劇

從單體應用遷移到微服務架構,對應用的部署要求更高

每個服務使用的技術棧 和依賴的外部服務千差萬別

如果使用虛擬化方式部署,需要為每個服務建立獨立的作業系統和映象

眾多作業系統,以及系統映象的維護是乙個重大挑戰

4.容器的部署方式

容器提供了一種更簡潔的方式,容器映象包含**以及**執行所以李愛的全部內容

開發團隊交付的是可直接執行的映象,而不是**安裝包

應用團隊只需要從開發交付的映象建立容器並執行

運維人員只需要管理執行容器的基礎設施和容器的執行

5.容器的優勢

最大的優勢是不可變的,保證所有環境的一致性,生產環境出現問題時,開發人員可以在本地執行同樣版本的映象來定位問題,不存在環境問題引發的工作量

相比傳統虛擬機器更加的輕量化

秒級響應,新版本一旦出現問題可快速回滾至上一版本。

6.什麼是docker?

docker是乙個開源專案,誕生於2013 年初,最初是 dotcloud 公司內部的乙個業餘專案。它基於 google 公司推出的go語言實現。專案後來加入了linux **會,遵從了apache 2.0 協議,專案**在github (

上進行維護。

docker 專案的目標是實現輕量級的作業系統虛擬化解決方案。 docker 的基礎是 linux 容器(lxc)等技術。在 lxc 的基礎上 docker 進行了進一步的封裝,讓使用者不需要去關心容器的管理,使得操作更為簡便。

使用者操作docker 的容器就像操作乙個快速輕量級的虛擬機器一樣簡單。

7.倉庫,容器,映象

2)映象是構建docker的基石。使用者基於映象來執行自己的容器。映象也是docker生命週期中的「構建」部分。映象是基於聯合檔案系統的一種層式結構,由一系列指令一步一步構建出來。docker 映象相當於乙個唯讀的模板。映象可以用來建立 docker 容器

3)容器docker 利用容器來執行應用。容器是從映象建立的執行例項。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。容器是基於映象啟動起來的,容器中可以執行乙個或多個程序。我們可以認為,映象是docker生命週期中的構建或者打包階段,而容器則是啟動或者執行階段。容器基於映象啟動,一旦容器啟動完成後,我們就可以登入到容器中安裝自己需要的軟體或者服務。(可以這樣理解,從阿里雲拉下來的mysql其實就是映象檔案)

8.安裝docker

yum install docker

9.docker 的常見命令

啟動/停止/重啟docker systemctl start/stop/restart docker

檢視docker狀態systemctl status docker

檢視docker的概要資訊 docker info

檢視docker版本資訊 docker --version

10.操作映象

檢視docker本地的映象 docker images

搜尋乙個映象docker search mysql

拉取映象docker pull centos:7(一般用的不多,我感覺)

上傳映象 docker push 映象名(到目前為止沒用過)

刪除docker映象: docker rmi  映象id  #刪除映象需要先刪除該映象生成的容器

檢視映象或容器詳細資訊docker inspect 容器或映象id

11.啟動容器

上課使用啟動容器的方法如下:(也可以使用:sudo docker start +容器id/容器名[支援模糊查詢]})

docker run -d --name=nginx-55 -p 97:80 -v nginx-vol:/usr/share/nginx/html nginx
建立容器:docker run

引數:-i :表示互動式

-t :表示容器啟動後會進入其命令列終端,加入這兩個引數後,加入這兩個引數後,容器建立就能登入進去,即分配乙個偽終端

--name:為建立的容器命名

-v :表示目錄對映關係(前者是宿主機目錄絕對路徑,後者是對映到宿主機上的目錄),可以使用多個-v 做多個目錄或檔案對映。注意:最好做目錄對映,在宿主機上做修改,然後共享到容器上。

-d :在run後面加上-d引數,則會建立乙個守護式容器在後台執行(這樣建立容器就不會自動登入容器,如果只加-i -t兩個引數,建立容器後就會自動進去容器).

-p:表示埠對映,前者是宿主機埠,後者是容器內的對映埠.可以使用多個 -p 做多個埠對映

後台啟動容器,建立守護式容器:docker run -d 映象名: tag | 映象id

進入容器,登入守護式容器:docker exec -it 容器id/容器名稱 /bin/bash

啟動容器並進入,建立互動式容器::docker run -it --name=容器名稱 映象id|映象名:tag

退出當前容器:exit

檢視執行的容器:docker ps

檢視所有容器,包括執行和非執行: docker ps -a

停止容器:docker stop 容器id|容器名稱

啟動停止的容器; docker start 容器id|容器名稱

刪除容器:docker rm 容器id|容器名稱 #刪除乙個停止的容器

docker rm -f 容器id|容器名稱 #強制刪除乙個容器,可以是執行狀態

刪除所有容器:docker rm -f (docker ps -a | awk '')

12.宿主機和容器之間複製檔案

宿主機複製檔案到容器:docker cp 宿主機檔案  容器名稱:容器路徑

容器中複製檔案到宿主機:docker cp 容器名稱:容器路徑 宿主機目錄

13.mysql容器部署

拉取mysql映象docker pull mysql:5.7

建立容器docker run -d --name=mysql -p 3306:3306 -e mysql_root_password=123456 mysql:5.7

登入mysql容器docker exec -it mysql /bin/bash

ORACLE相關內容

1 em,dbca,netca,netmgr出現亂碼方案 cd oracle home jre lib mv font.properties font.properties.bak mv font.properties.zh font.properties em,dbca,netca,netmgr詳...

JVM相關內容

本地 native code 每個因素對記憶體占用的影響又會隨著應用程式 執行環境和系統平台的不同而變化,那怎樣計算總的記憶體佔用量?是的,想得到乙個準確的數字不是那麼容易,因為 你很難控制本地 native 部分。你能控制的部分只有堆大小 xmx,類占用的記憶體 xx maxpermsize,還有...

指標相關內容

1.指標是變數,佔4位元組,存放的是位址 2.指標型別與零值比較 if n null 或者if n null 3.野指標 int p 空指標 int p null 避免野指標 以char型別為例 char p char mallloc sizeof char 10 要包含標頭檔案 include 使...