mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-26 23:16:17 +00:00
replace '操作系統' as '作業系統'
This commit is contained in:
parent
6b168bced1
commit
3741994aef
@ -1,7 +1,7 @@
|
||||
## Docker 鏡像
|
||||
Docker 鏡像就是一個只讀的模板。
|
||||
|
||||
例如:一個鏡像可以包含一個完整的 ubuntu 操作系統環境,裏面僅安裝了 Apache 或用戶需要的其它應用程序。
|
||||
例如:一個鏡像可以包含一個完整的 ubuntu 作業系統環境,裏面僅安裝了 Apache 或用戶需要的其它應用程序。
|
||||
|
||||
鏡像可以用來創建 Docker 容器。
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Docker 容器
|
||||
容器是 Docker 又一核心概念。
|
||||
|
||||
簡單的說,容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機可以理解為模擬運行的一整套操作系統(提供了運行態環境和其他系統環境)和跑在上面的應用。
|
||||
簡單的說,容器是獨立運行的一個或一組應用,以及它們的運行態環境。對應的,虛擬機可以理解為模擬運行的一整套作業系統(提供了運行態環境和其他系統環境)和跑在上面的應用。
|
||||
|
||||
本章將具體介紹如何來管理一個容器,包括創建、啟動和停止等。
|
||||
|
@ -25,7 +25,7 @@ $ sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp py
|
||||
上面的命令加載主機的 `/src/webapp` 目錄到容器的 `/opt/webapp`
|
||||
目錄。這個功能在進行測試的時候十分方便,比如用戶可以放置一些程序到本地目錄中,來查看容器是否正常工作。本地目錄的路徑必須是絕對路徑,如果目錄不存在 Docker 會自動為你創建它。
|
||||
|
||||
*註意:Dockerfile 中不支持這種用法,這是因為 Dockerfile 是為了移植和分享用的。然而,不同操作系統的路徑格式不一樣,所以目前還不能支持。
|
||||
*註意:Dockerfile 中不支持這種用法,這是因為 Dockerfile 是為了移植和分享用的。然而,不同作業系統的路徑格式不一樣,所以目前還不能支持。
|
||||
|
||||
Docker 掛載數據卷的默認權限是讀寫,用戶也可以通過 `:ro` 指定為只讀。
|
||||
```
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
可以使用 `docker pull` 命令來從倉庫獲取所需要的鏡像。
|
||||
|
||||
下面的例子將從 Docker Hub 倉庫下載一個 Ubuntu 12.04 操作系統的鏡像。
|
||||
下面的例子將從 Docker Hub 倉庫下載一個 Ubuntu 12.04 作業系統的鏡像。
|
||||
```
|
||||
$ sudo docker pull ubuntu:12.04
|
||||
Pulling repository ubuntu
|
||||
|
@ -9,7 +9,7 @@ $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
|
||||
$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
|
||||
```
|
||||
|
||||
如果使用操作系統自帶包安裝 Docker,目前安裝的版本是比較舊的 0.9.1。 要安裝更新的版本,可以通過使用 Docker 源的方式。
|
||||
如果使用作業系統自帶包安裝 Docker,目前安裝的版本是比較舊的 0.9.1。 要安裝更新的版本,可以通過使用 Docker 源的方式。
|
||||
|
||||
### 通過Docker源安裝最新版本
|
||||
要安裝最新的 Docker 版本,首先需要安裝 apt-transport-https 支持,之後通過添加源來安裝。
|
||||
|
@ -4,12 +4,12 @@ Docker 是一個開源項目,誕生於 2013 年初,最初是 dotCloud 公司
|
||||
|
||||
Docker 自開源後受到廣泛的關注和討論,以至於 dotCloud 公司後來都改名為 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛應用。
|
||||
|
||||
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。
|
||||
Docker 項目的目標是實現輕量級的作業系統虛擬化解決方案。
|
||||
Docker 的基礎是 Linux 容器(LXC)等技術。
|
||||
|
||||
在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。
|
||||
|
||||
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接使用本地主機的操作系統,而傳統方式則是在硬體層面實現。
|
||||
下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在作業系統層面上實現虛擬化,直接使用本地主機的作業系統,而傳統方式則是在硬體層面實現。
|
||||
|
||||
![傳統虛擬化](../_images/virtualization.png)
|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
Docker 底層的核心技術包括 Linux 上的名字空間(Namespaces)、控制組(Control groups)、Union 文件系統(Union file systems)和容器格式(Container format)。
|
||||
|
||||
我們知道,傳統的虛擬機通過在宿主主機中運行 hypervisor 來模擬一整套完整的硬件環境提供給虛擬機的操作系統。虛擬機系統看到的環境是可限制的,也是彼此隔離的。
|
||||
我們知道,傳統的虛擬機通過在宿主主機中運行 hypervisor 來模擬一整套完整的硬件環境提供給虛擬機的作業系統。虛擬機系統看到的環境是可限制的,也是彼此隔離的。
|
||||
這種直接的做法實現了對資源最完整的封裝,但很多時候往往意味著系統資源的浪費。
|
||||
例如,以宿主機和虛擬機系統都為 Linux 系統為例,虛擬機中運行的應用其實可以利用宿主機系統中的運行環境。
|
||||
|
||||
我們知道,在操作系統中,包括內核、文件系統、網絡、PID、UID、IPC、內存、硬盤、CPU 等等,所有的資源都是應用進程直接共享的。
|
||||
我們知道,在作業系統中,包括內核、文件系統、網絡、PID、UID、IPC、內存、硬盤、CPU 等等,所有的資源都是應用進程直接共享的。
|
||||
要想實現虛擬化,除了要實現對內存、CPU、網絡IO、硬盤IO、存儲空間等的限制外,還要實現文件系統、網絡、PID、UID、IPC等等的相互隔離。
|
||||
前者相對容易實現一些,後者則需要宿主機系統的深入支持。
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
## 名字空間
|
||||
名字空間是 Linux 內核一個強大的特性。每個容器都有自己單獨的名字空間,運行在其中的應用都像是在獨立的操作系統中運行一樣。名字空間保證了容器之間彼此互不影響。
|
||||
名字空間是 Linux 內核一個強大的特性。每個容器都有自己單獨的名字空間,運行在其中的應用都像是在獨立的作業系統中運行一樣。名字空間保證了容器之間彼此互不影響。
|
||||
|
||||
### pid 名字空間
|
||||
不同用戶的進程就是通過 pid 名字空間隔離開的,且不同名字空間中可以有相同 pid。所有的 LXC 進程在 Docker 中的父進程為Docker進程,每個 LXC 進程具有不同的名字空間。同時由於允許嵌套,因此可以很方便的實現嵌套的 Docker 容器。
|
||||
|
Loading…
Reference in New Issue
Block a user