先上圖:
Dcoker基本概念
Docker 包括三個基本概念:
-
映象(
Image
):Docker 映象是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)。映象不包含任何動態資料,其內容在構建之後也不會被改變。 -
容器(
Container
):映象(Image
)和容器(Container
)的關係,就像是物件導向程式設計中的類
和例項
一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等。 -
倉庫(
Repository
):倉庫(Repository
)類似Git的遠端倉庫,集中存放映象檔案。
三者關係可以用下圖表示:
接下來看一看Docker的常用命令。
服務
- 檢視Docker版本資訊
docker version
- 檢視docker簡要資訊
docker -v
- 啟動Docker
systemctl start docker
- 關閉docker
systemctl stop docker
- 設定開機啟動
systemctl enable docker
- 重啟docker服務
service docker restart
- 關閉docker服務
service docker stop
映象
映象倉庫
Docker Hub 等映象倉庫上有大量的高質量的映象可以用,可以從倉庫獲取映象。
- 檢索映象
docker search 關鍵字
- 拉取映象
docker pull [選項] [Docker Registry 地址[:埠號]/]倉庫名[:標籤]
映象管理
- 列出映象
docker image ls
docker images
- 刪除映象
# 刪除指定映象
docker rmi <映象Id>
- 匯出映象
# 將映象儲存為歸檔檔案
docker save
- 匯入映象
docker load
Dockerfile構建映象
Dockerfile 是一個文字格式的配 檔案,使用者可以使用 Dockerfile 來快速建立自定義的映象。
Dockerfile 由一行行行命令語句組成,並且支援以#開頭的註釋行.
Dockerfile常見指令
下面是Dockerfile中一些常見的指令:
-
FROM:指定基礎映象
-
RUN:執行命令
-
COPY:複製檔案
-
ADD:更高階的複製檔案
-
CMD:容器啟動命令
-
ENV:設定環境變數
-
EXPOSE:暴露埠
其它的指令還有ENTRYPOINT、ARG、VOLUME、WORKDIR、USER、HEALTHCHECK、ONBUILD、LABEL等等。
以下是一個Dockerfile例項:
FROM java:8
MAINTAINER "jinshw"<jinshw@qq.com>
ADD mapcharts-0.0.1-SNAPSHOT.jar mapcharts.jar
EXPOSE 8080
CMD java -jar mapcharts.jar
映象構建
docker build
映象執行
映象執行,就是新建並執行一個容器。
docker run [映象ID]
容器
容器生命週期
- 啟動:啟動容器有兩種方式,一種是基於映象新建一個容器並啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。
# 新建並啟動
docker run [映象名/映象ID]
# 啟動已終止容器
docker start [容器ID]
- 檢視容器
# 列出本機執行的容器
$ docker ps
# 列出本機所有的容器(包括停止和執行)
$ docker ps -a
- 停止容器
# 停止執行的容器
docker stop [容器ID]
# 殺死容器程式
docker kill [容器ID]
- 重啟容器
docker restart [容器ID]
- 刪除容器
docker rm [容器ID]
進入容器
進入容器有兩種方式:
# 如果從這個 stdin 中 exit,會導致容器的停止
docker attach [容器ID]
# 互動式進入容器
docker exec [容器ID]
進入容器通常使用第二種方式,docker exec
後面跟的常見引數如下:
- d, --detach 在容器中後臺執行命令;
- i, --interactive=true I false :開啟標準輸入接受使用者輸入命令
匯出和匯入
- 匯出容器
#匯出一個已經建立的容器到一個檔案
docker export [容器ID]
- 匯入容器
# 匯出的容器快照檔案可以再匯入為映象
docker import [路徑]
其它
- 檢視日誌
# 匯出的容器快照檔案可以再匯入為映象
docker logs [容器ID]
這個命令有以下常用引數
-f : 跟蹤日誌輸出
--since :顯示某個開始時間的所有日誌
-t : 顯示時間戳
--tail :僅列出最新N條容器日誌
- 複製檔案
# 從主機複製到容器
sudo docker cp host_path containerID:container_path
# 從容器複製到主機
sudo docker cp containerID:container_path host_path
參考:
【1】:Docer從入門到實踐
【3】:docker常用命令整理
【4】:Docker 常用命令與操作
【6】:docker 常用命令