中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker基本使用方法有哪些

發布時間:2021-12-13 11:33:36 來源:億速云 閱讀:141 作者:iii 欄目:云計算

這篇文章主要介紹“Docker基本使用方法有哪些”,在日常操作中,相信很多人在Docker基本使用方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Docker基本使用方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1. 容器化的簡介和發展歷程

1.1 虛擬化技術介紹

簡單來說,Docker 是一種虛擬化技術,虛擬化技術可以分至少3種。

第一種:硬件虛擬化,這是底層的技術實現。

第二種:軟件虛擬化,比如常見的虛擬機。

第三種:就是我們今天所介紹的,容器虛擬化技術。

通俗地講,虛擬化技術就是多個人,通過一種技術協作使用一臺電腦來工作,使得每個人都覺得如同在自己的電腦上工作一樣互不干擾。

Docker基本使用方法有哪些

為了更好的了解這三種虛擬化技術的運行機制,我們對比一下物理機、虛擬機、Docker 系統運行棧。

Docker基本使用方法有哪些

可以看到,無論是哪一種虛擬化技術,都是多層的。其中,藍色部分是底層實現,黃色的部分是操作系統及以上的軟件層面上的實現。層數越多,運行的開銷就會更大。

物理機的系統運行棧分析:

第一層 Infrastructure:基礎架構層

第二層 Host OS:操作系統層  

第三層:二進制/依賴庫

第四層:應用程序

虛擬機的系統運行棧分析:

底層實現上,虛擬機比物理機多了一層 Hypervisor。這是一個常用的硬件虛擬化軟件,可以把底層的操作系統抽象出多個底層的硬件接口。

而在操作系統及以上的軟件層面實現上,被分成了3個并行執行的虛擬機,而每一個并行運行的虛擬機和物理機相比,又多了一層 Guest OS,也就是每個虛擬機還要運行自己的操作系統,這是和物理機的一個比較大的區別。

Docker 的系統運行棧分析:

和虛擬機的結構相似,Docker 也被分為了若干個“容器”。但是和虛擬機相比,少了一層。可以直觀的感受到,Docker 的運行效率要比虛擬機要高。

互聯網常面臨一個場景:爆發式的流量增長。在這種情況下,效率一定是第一位的。

針對以上三種虛擬化技術,從他們的部署、運行時間上,也可以對他們的運行效率簡單對比:

物理機的部署,時間周期大概是以月為計算。包括建設機房,建設機架,部署機器,部署網絡,部署機器的操作系統等,整個的部署周期十分長。

虛擬機:在購買之后幾分鐘,1個虛擬機就能創建完了。

Docker :  Docker 的啟動是秒級的。

從部署、運行時間上,可以看到 Docker 的效率十分高。

1.2 容器化發展簡史介紹

容器化技術其實不是一個新穎的技術,早在1978年,就有對容器化的探索。下圖可以清楚的看到容器化技術的簡史:

Docker基本使用方法有哪些

1.3 認識 Docker

集裝箱的出現改變了運輸業,Docker 之于計算機行業,好比集裝箱之于運輸業。

2013年,Docker 對外開源,2014年6月9日正式發布,從 Docker 0.1到 Docker 1.0 短短15個月的時間,風靡全球。2017年正式宣布擁抱 K8S, 這標志著“容器管理系統之爭”結束。

Docker 為什么可以廣受接納,有如下幾個優勢:

a. 持續部署與測試的一致性

Docker 能夠保持容器內部所有的配置和依賴關系始終不變。你可以從開發到產品發布的整個過程中使用相同的容器來確保沒有任何差異或者人工干預。

b. 多云平臺兼容

可移植性好,可以在任何擁有 Docker runtime 的環境快速部署。例如 AWS GCP BCE Azure aliyun 都支持 docker,沒有遷移的成本。

c. 環境標準化和版本控制

設想某次發布因為完成一個組件的升級而導致你整個環境都損壞了,Docker 可以在幾分鐘內輕松地滾回到這個鏡像的前一個版本。

d. 隔離性

Docker 可以確保你的應用程序與資源是分隔開的。例如依賴多個不同版本的 tomcat 的時候不會因為依賴沖突導致崩潰。同時 Docker 還能確保每個容器只使用分配給它的額定資源,不會因為某個進程影響其他容器。

e. 安全性

由于 Docker 容器是隔離的,并且資源是受限制的。所以即使你其中一個應用程序被黑,也不會影響運行在其它 Docker 容器上的應用程序。

總結起來,Docker 的優點可以概括為以下三句話:

 1. 一處成功,處處成功。

  • 橫跨開發、測試、部署環境

  • 也不用管是在實體機、虛擬機、還是在某個云上

2. 高度集成,高度一致,使用方便

  • 創建和部署十分便捷,效率極高

  • 流水線作業,持續構建發布(CI/CD)

3. 結合微服務,大大提升工程研發效率

  • App 相互隔離,解耦依賴關系,方便彈性擴展

  • 有安全保證,接入無負擔

2. Docker 容器的基本使用和鏡像操作

第一部分我們對 Docker 容器有一個基本的認識。這一部分,我們將通過一些實際的演練和操作,讓大家掌握 Docker 容器的基本使用和鏡像操作。在這一部分正式開展前,簡單“掃盲”。科普一下 Docker 里的常用名詞、Docker 的環境安裝及 Docker 架構。

常用名詞

  • Docker 鏡像:Docker images

  • Docker 倉庫:Docker repository

  • Docker 容器:Docker containers

  • Docker 宿主機:Docker host

  • Docker 守護進程:Docker daemon

  • Docker 客戶端:Docker client

Docker 環境安裝

  • Centos 系統環境安裝 Docker:

    curl-fsSL https://get.docker.com | bash-s docker

  • OSX 系統安裝 Docker:

    https://hub.docker.com/editions/community/docker-ce-desktop-mac

  • Windows 系統安裝D ocker:

    https://hub.docker.com/editions/community/docker-ce-desktop-windows

目前來說,除了 Linux 系統可以直接運行 Docker之外,其他系統都是基于虛擬機運行的。

Docker 的架構:C/S模型

Client: 與 Docker 通信的一個組件,也就是客戶端。

Docker daemon : 相當于守護進程,也就是 docker 的 Server,他執行的結果是 Containers (容器)

Images: 鏡像。鏡像和容器之間的關系。運行起來的鏡像就是一個容器。

Registry: 倉庫。倉庫具體存放的是鏡像。

Docker基本使用方法有哪些

2.1 Docker 核心概念和使用

 Docker repository 鏡像倉庫

鏡像倉庫是集中存放管理鏡像的地方。倉庫有分為公有倉庫(DockerHub、DockerPool)和私有倉庫。有了鏡像倉庫,用戶可以用它來:

  • 中心化的倉庫,提供上傳/下載 鏡像的能力。

  • 管理倉庫中的鏡像,大多數倉庫都提供檢索和版本整理能力。

DockerHub 是 Docker  官方提供的公共倉庫,可以檢索官方鏡像,除此之外還有很多私有 registry,例如 BCE,也可以自己動手搭建自己的 Docker image repository。

Docker Hub 地址:https://hub.docker.com

DockerFile: 構建 Docker 鏡像的源代碼

Dockerfile 是用于生成 image 的源文件,源代碼像編程一樣,有自己的語法,編譯方式,Dockerfile 也有自己的語法

以下是一些例子:

-FROM  基于已有的 Docker image 來生成

例如:FROM tomcat:8.0(含義:用 tomcat 這個鏡像的8.0版本做為我們的基礎鏡像,然后將現有的鏡像疊在該鏡像之上)

-COPY 把用戶的文件 copy 到 image 去

例如:COPY index.jsp  /usr/local/tomcat/webapps/ROOT

(COPY 本機文件地址   鏡像內文件地址)

-EXPOSE 對外通過該端口提供服務

 例如:EXPOSE 8080

-CMD  啟動該 image 應該運行的命令

 例如:CMD[ “catalina.sh”, “run”]

2.2 Docker 入門命令

入門命令1:獲得幫助

Docker help [command]獲取run命令的幫助。

入門命令2:鏡像操作系列命令

Docker pull [name]:[tag] 拉取/更新某image

Docer image ls 列舉當前的Docker image

Docker image rm[image ID] 刪除某image

Docker基本使用方法有哪些

Docker build-t [name]:[tag] [dockerfile path]

從本地路徑尋找 Dockerfile 構建鏡像,并打 tag 上

Docker基本使用方法有哪些

入門命令3:鏡像運行系列命令

Docker run-it ubuntu bash

-it:表示起一個交互終端,來 run 后面的命令

-d: 表示運行 docker 容器到后臺

Docker基本使用方法有哪些

Docker ps 查看運行中的容器

Docker kill [container ID]終止容器

docker run  -v dor1:dir2 redis  目錄掛載

例如:docker run –v~:/ user-it Ubuntu bash 是把 host 的用戶 home 主目錄,映射為Docker實例中的/user目錄。

Tips: 關于鏡像的常見問題

1. 我的拉取的鏡像究竟存到哪里了?

鏡像有 Docker 管理,每個系統具體路徑不一樣。

Linux 系統存儲在/var/lib/docker

OSX 系統存儲在:

/Users/{YourUserName}/Library/Containers/com.docker.docker/Data

2. 我沒有指定鏡像的 tag 怎么辦?

命令中沒有指定鏡像 tag 時會默認使用 latest 作為 tag。避免發生預期錯誤的方法是指定 tag。

3. 鏡像刪除不掉怎么辦?

鏡像之間可能會相互依賴(layer),添加-f可以強制刪除。

2.3 如何 Debug

1. 看容器 log:

 Docker logs [container_id]

2. Inspect 獲取容器/鏡像的元數據。

 Docker inspect [container_id]

3. 在 Docker 實例中執行交互的shell命令。

Docker exec –it [container_id] bash

Docker exec-it[container_id]s

2.4 如何構建自己的 Docker 鏡像

1. 前期準備

Dockerfile 內容如下

FROM tomcat:8.0

COPY index.jsp /usr/local/tomcat/webapps/ROOT

EXPOSE 8080

Index.jsp 內容如下

<%< span="">

Out. Println(“Hello World, V1”);

%>

Docker基本使用方法有哪些

2. 構建鏡像

Docker build-t mytomact:1.0

Docker run –p 8080:8080 –d mytomcat:1.0

Curl localhost:8080

Docker logs {容器 id}

2.5 鏡像制作的基本操作命令總結

1. 構建 Docker 鏡像

Cd node/docker

Docker build –t hub.baidubce.com/bootcamp/mynode:1.0.0

2. 運行鏡像

Docker run-d –p 8000:8080 hub.baidubce.com/bootcamp/mynode:1.0.0

Docker ps | grep mynode

Curl localhost:8000

3. 查看執行日志

Docker ps |grep mynode

Docker logs{container id}

3. Docker 底層核心技術

Docker 是容器虛擬化的相關技術的結合,它的三大技術支柱包括:Cgroup,Namespace, AUFS。下面簡單介紹一下者三大技術支柱

3.1 Cgroup

全稱:Linux Control Group ,又稱為 Cgroup,是 Linux Kernel 的一個功能。

由 Google 工程師發起并貢獻。最終合入了內核代碼;作用是限制一個進程組的資源(包括內存用量,CPU用量,磁盤IO,網絡IO,網絡優先級等)

 http://man7.org/linux/man-pages/man7/cgroups.7 .html

Docker基本使用方法有哪些

例如:使用 Cgroup 限制一個進程資源的用量

Mkdir –p /sys/fs/cgroup/cpu/k8s_s1

Echo 50000>/cguop/cpu/k8s_s1/cpu.cfs_quota_us

將cpu.cfs_quota_us 設為50000

相當于cpu.cfs_period_us的100000是50%

Echo{PID}>/cgroup/cpu/foo/tasks

3.2 Linux Namespace

Namespace 是 Linux Kernel 提供的一種內核級別資源隔離的方法。又稱為命名空間,它主要做訪問隔離,即同一個命名空間的多個資源(memory, CPU, network, pid)可以相互看到,但是之外的看不到。

http://man7.org/linux/man_pages/man7/namespaces.7.html

目前 Namespce 種類有以下7種:

Docker基本使用方法有哪些

例如:使用 Namespace 隔離一個進程的資源

lSyscall. CLONE NEWPID: 隔離PID

Docker基本使用方法有哪些

lSyscall. CLONE_NEWNET :隔離網絡

Docker基本使用方法有哪些

3.3  AUFS

全稱:Advanced Multilayered Unification File System。一種高性能分層文件系統,是Docker image的基石。可以把多個文件掛載到同一個掛載點。只有第一層(第一個文件夾層級)是可寫的,其余層是只讀的。增加/刪除文件時都會轉換為寫操作寫入可寫層。

修改文件時,AUFS 利用 Cow 特性來修改只讀層中的文件。不管修改數據的量的多少。在第一次修改時,文件都會被拷貝到可寫層然后再被修改。AUFS 的 Cow 特性能夠允許在多個容器之間共享分層,從而減少物理空間占用。

例如:使用AUFS創建多重掛載點

1.Mount-t aufs –o dirs.=./fruits=tw:./vegetables=rw none./mnt

2.Echo modify>> ./mnt/tomato

Docker基本使用方法有哪些

到此,關于“Docker基本使用方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新巴尔虎左旗| 安平县| 包头市| 西城区| 武乡县| 临高县| 共和县| 凯里市| 诸城市| 四平市| 健康| 忻城县| 宁乡县| 张家口市| 都江堰市| 东台市| 周至县| 吉水县| 靖州| 阿勒泰市| 成武县| 香格里拉县| 深州市| 县级市| 金沙县| 阳春市| 崇阳县| 涿州市| 铜梁县| 满洲里市| 阿克陶县| 新巴尔虎右旗| 临泉县| 栾川县| 高密市| 乐清市| 佛冈县| 许昌市| 榆树市| 武威市| 上高县|