開始學習docker相關知識,這裡記錄一些相關的知識點掃掃盲
Docker 能做什麼?
眾所周知,Docker 是一個用於開發,釋出和執行應用程式的開放平臺。通俗地講,Docker 類似於集裝箱。在一艘大船上,各種貨物要想被整齊擺放並且相互不受到影響,我們就需要把各種貨物進行集裝箱標準化。有了集裝箱,我們就不需要專門運輸水果或者化學用品的船了。我們可以把各種貨品通過集裝箱打包,然後統一放到一艘船上運輸。Docker 要做的就是把各種軟體打包成一個集裝箱(映象),然後分發,且在執行的時候可以相互隔離。
Docker 核心概念
映象
映象是什麼呢?通俗地講,它是一個只讀的檔案和資料夾組合。它包含了容器執行時所需要的所有基礎檔案和配置資訊,是容器啟動的基礎。所以你想啟動一個容器,那首先必須要有一個映象。映象是 Docker 容器啟動的先決條件。
映象是一個只讀的 Docker 容器模板,包含啟動容器所需要的所有檔案系統結構和內容。簡單來講,映象是一個特殊的檔案系統,它提供了容器執行時所需的程式、軟體庫、資源、配置等靜態資料。即映象不包含任何動態資料,映象內容在構建後不會被改變。
容器
容器是什麼呢?容器是 Docker 的另一個核心概念。通俗地講,容器是映象的執行實體。映象是靜態的只讀檔案,而容器帶有執行時需要的可寫檔案層,並且容器中的程式屬於執行狀態。即容器執行著真正的應用程式。容器有初建、執行、停止、暫停和刪除五種狀態。
雖然容器的本質是主機上執行的一個程式,但是容器有自己獨立的名稱空間隔離和資源限制。也就是說,在容器內部,無法看到主機上的程式、環境變數、網路等資訊,這是容器與直接執行在主機上程式的本質區別。
倉庫
Docker 的映象倉庫類似於程式碼倉庫,用來儲存和分發 Docker 映象。映象倉庫分為公共映象倉庫和私有映象倉庫。
映象、容器、倉庫,三者之間的聯絡
映象是容器的基石,容器是由映象建立的。一個映象可以建立多個容器,容器是映象執行的實體。倉庫就非常好理解了,就是用來存放和分發映象的。
docker安裝
Docker 是跨平臺的解決方案,它支援在當前主流的各大平臺安裝,包括 Ubuntu、RHEL、CentOS、Debian 等 Linux 發行版,同時也可以在 OSX 、Microsoft Windows 等非 Linux 平臺下安裝使用。
演示系統:centos7.3
解除安裝已有 Docker
如果你已經安裝過舊版的 Docker,可以先執行以下命令解除安裝舊版 Docker。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
目前我的系統是沒有安裝docker的
首次安裝 Docker 之前,需要新增 Docker 安裝源。新增之後,我們就可以從已經配置好的源,安裝和更新 Docker。新增 Docker 安裝源的命令如下:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
顯示沒有這個命令,我們這裡安裝一下,使用命令yum -y install yum-utils
安裝完成後,就可以使用該命令配置docker安裝源了
正常情況下,直接安裝最新版本的 Docker 即可,因為最新版本的 Docker 有著更好的穩定性和安全性。你可以使用以下命令安裝最新版本的 Docker。
sudo yum install docker-ce docker-ce-cli containerd.io
安裝完成後,使用以下命令啟動 Docker。
sudo systemctl start docker
安裝完成後,我們需要使用以下命令啟動一個 hello world 的容器。
sudo docker run hello-world
ok,以上我們就完成了docker的安裝
docker基本操作
映象操作
- 拉取映象,使用docker pull命令拉取遠端倉庫的映象到本地 ;
- 重新命名映象,使用docker tag命令“重新命名”映象 ;
- 檢視映象,使用docker image ls或docker images命令檢視本地已經存在的映象 ;
- 刪除映象,使用docker rmi命令刪除無用映象 ;
- 構建映象,構建映象有兩種方式。第一種方式是使用docker build命令基於 Dockerfile 構建映象,也是我比較推薦的映象構建方式;第二種方式是使用docker commit命令基於已經執行的容器提交為映象。
容器的生命週期是容器可能處於的狀態,容器的生命週期分為 5 種。
- created:初建狀態
- running:執行狀態
- stopped:停止狀態
- paused: 暫停狀態
- deleted:刪除狀態
各生命週期之前的轉換關係如圖所示:
通過docker create命令生成的容器狀態為初建狀態,初建狀態通過docker start命令可以轉化為執行狀態,執行狀態的容器可以通過docker stop命令轉化為停止狀態,處於停止狀態的容器可以通過docker start轉化為執行狀態,執行狀態的容器也可以通過docker pause命令轉化為暫停狀態,處於暫停狀態的容器可以通過docker unpause轉化為執行狀態 。處於初建狀態、執行狀態、停止狀態、暫停狀態的容器都可以直接刪除。
當使用docker run
建立並啟動容器時,Docker 後臺執行的流程為:
- Docker 會檢查本地是否存在 busybox 映象,如果映象不存在則從 Docker Hub 拉取 busybox 映象;
- 使用 busybox 映象建立並啟動一個容器;
- 分配檔案系統,並且在映象只讀層外建立一個讀寫層;
- 從 Docker IP 池中分配一個 IP 給容器;
- 執行使用者的啟動命令執行映象。
常見的docker命令可檢視Docker 命令大全
docker安裝nginx
使用命令docker pull nginx
拉取nginx映象,執行完成後,通過docker images
檢視映象,可檢視到nginx映象已經拉取成功
使用docker run -p 80:80 --name nginxRun -itd nginx
執行映象,並使用docker ps
檢視執行的映象,可檢視到nginxRun容器正在執行中
通過ip可正常訪問nginx
ok,到這裡也算入門了,接下來繼續搭建環境
本作品採用《CC 協議》,轉載必須註明作者和本文連結