Docker基礎知識java
1. Docker基礎知識點mysql
1.1 什麼是Dockerweb
Docker是一個開源的引擎,能夠輕鬆的爲任何應用建立一個輕量級的、可移植的、自給自足的容器。(集裝箱原理)sql
1.2 什麼是LXCdocker
Linux Container容器是一種內核虛擬化技術,能夠提供輕量級的虛擬化,以便隔離進程和資源編程
Docker核心解決的問題是利用LXC來實現相似VM的功能,從而利用更加節省的硬件資源提供給用戶更多的計算資源。centos
2. Docker架構bash
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和建立Docker容器。服務器
Docker 容器經過 Docker 鏡像來建立。網絡
容器與鏡像的關係相似於面向對象編程中的對象與類。
docker |
面向對象 |
容器 |
對象 |
鏡像 |
類 |
注:
簡單的說類是對象的模版。
首先咱們能夠來理解一下對象的概念,面向對象編程的程序實際就是多個對象的集合,咱們能夠把全部的事物都抽象成對象,在程序設計中能夠看做:對象=屬性+方法。屬性就是對象的數據,而方法就是對象的行爲。下面來講類,就像我開頭所說類是對象的模版,而對象是類的實例化。舉個例子,餅乾模子能夠看做是類,而具體的餅乾就是對象。再好比有一個類是表示人,而後能夠經過人這個模版來實例化出張3、李四。
Docker總架構圖
docker pull
docker run
3. Docker名詞解釋
Docker 鏡像(Images) |
Docker 鏡像是用於建立 Docker 容器的模板。 |
Docker 容器(Container) |
容器是獨立運行的一個或一組應用。 Docker架構中服務交付的最終體現形式 |
Docker 客戶端(Client) |
Docker 客戶端經過命令行或者其餘工具使用 Docker API 與 Docker 的守護進程通訊。 |
Docker Daemon |
Docker Daemon是Docker架構中一個常駐在後臺的系統進程,接受並處理Docker Client發送的請求。 |
Docker Server
|
Docker Server在Docker架構中是專門服務於Docker Client的server,接受並調度分發Docker Client發送的請求。 |
Engine
|
Engine是Docker架構中的運行引擎,同時也Docker運行的核心模塊。它扮演Docker container存儲倉庫的角色,而且經過執行job的方式來操縱管理這些容器。 |
Job |
一個Job能夠認爲是Docker架構中Engine內部最基本的工做執行單元。Docker能夠作的每一項工做,均可以抽象爲一個job。 |
Docker 倉庫(Registry) |
Docker 倉庫用來保存鏡像,能夠理解爲代碼控制中的代碼倉庫。而容器鏡像是在容器被建立時,被加載用來初始化容器的文件架構與目錄。 |
Graph
|
Graph在Docker架構中扮演已下載容器鏡像的保管者,以及已下載容器鏡像之間關係的記錄者。 |
Driver
|
Driver是Docker架構中的驅動模塊 |
graphdriver |
主要用於完成容器鏡像的管理,包括存儲與獲取。 |
networkdriver |
完成Docker容器網絡環境的配置 |
execdriver |
Docker容器的執行驅動,負責建立容器運行命名空間,負責容器資源使用的統計與限制,負責容器內部進程的真正運行等。 |
libcontainer
|
Docker架構中一個使用Go語言設計實現的庫,設計初衷是但願該庫能夠不依靠任何依賴,直接訪問內核中與容器相關的API。容器管理的包 |
Docker 主機(Host) |
一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。 |
|
|
4. Docker命令
4.1 環境信息相關
docker info //docker系統信息
docker version //docker版本信息
4.2 系統運維相關
docker ps
列出容器
docker ps [OPTIONS]
-a :顯示全部的容器,包括未運行的。
-f :根據條件過濾顯示的內容。
-l :顯示最近建立的容器。
-n :列出最近建立的n個容器。
-q :靜默模式,只顯示容器編號。
docker start/stop/restart
docker start :啓動一個或多少已經被中止的容器
docker stop :中止一個運行中的容器
docker restart :重啓容器
docker pause/unpause
docker pause :暫停容器中全部的進程。
docker unpause :恢復容器中全部的進程
docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause [OPTIONS] CONTAINER [CONTAINER...]
暫停webapp服務
docker pause webapp
恢復webapp服務
docker unpause webapp
docker kill
殺掉一個運行中的容器
docker kill [OPTIONS] CONTAINER [CONTAINER...]
docker exec
在運行的容器中執行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
ocker exec -it ContainerID/ContainaerName
在容器中開啓一個交互模式的終端
-i :即便沒有附加也保持STDIN 打開
-t :分配一個僞終端
(有時候會在容器外執行下腳本對比在容器內執行腳本,看輸出是否一致)
docker inspect
獲取容器/鏡像的元數據
docker inspect ContainerID/ContainaerName
-f :指定返回值的模板文件
(多用於獲取制定的參數)
(經過docker inspect | grep 關鍵字,也能搜索到,可是沒有 -f 指定搜索方便,尤爲是當你腳本中要獲取某個參數值時)
docker top
查看容器中運行的進程信息
docker top [OPTIONS] CONTAINER [ps OPTIONS]
docker cp
用於容器與主機之間的數據拷貝
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/
docker logs
獲取容器的日誌
-t : 顯示時間戳
--tail :僅列出最新N條容器日誌
docker logs -t --tail=10 webapp
(有時候產品開發讓看下logs,你們都說日誌太多了,就可使用--tail 來獲取最新的一部分日誌,爲了好區分時間,前面能夠加上 -t 顯示時間)
docker search
從Docker Hub查找鏡像
docker search [OPTIONS] TERM
docker pull
從鏡像倉庫中拉取或者更新指定鏡像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
從Docker Hub下載java最新版鏡像
docker pull java
docker push
將本地的鏡像上傳到鏡像倉庫,要先登錄到鏡像倉庫
docker push [OPTIONS] NAME[:TAG]
docker push webapp:v1
docker images
列出本地鏡像
docker images [OPTIONS] [REPOSITORY[:TAG]]
-a :列出本地全部的鏡像(含中間映像層,默認狀況下,過濾掉中間映像層);
-f :顯示知足條件的鏡像;
-q :只顯示鏡像ID。
docker run
建立一個新的容器並運行一個命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
使用鏡像centos:7以交互模式啓動一個容器,在容器內執行/bin/bash命令
docker run -it centos:7 /bin/bash
docker create
建立一個新的容器但不啓動它
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
使用docker鏡像centos:7建立一個容器,並將容器命名爲odps
docker create --name odps centos:7
docker rm
刪除一個或多少容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm -f webapp
docker export
將文件系統做爲一個tar歸檔文件導出到STDOUT
docker export [OPTIONS] CONTAINER
將id爲a404c6c174a2的容器保存爲tar文件
docker export -o mysql.tar a404c6c174a2
docker save
將指定鏡像保存成 tar 歸檔文件
docker save [OPTIONS] IMAGE [IMAGE...]
將鏡像127.0.0.1:5000/java 生成java_v1.tar文檔
docker save -o java_v1.tar 127.0.0.1:5000/java
docker import
從歸檔文件中建立鏡像
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
從鏡像歸檔文件mysql.tar建立鏡像,命名爲127.0.0.1:5000/mysql:v1
docker import mysql.tar 127.0.0.1:5000/mysql:v1
docker tag
標記本地鏡像,將其納入某一倉庫
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
將鏡像docker.io/mysql標記爲 127.0.0.1:5000/mysql 鏡像
docker tag docker.io/mysql 127.0.0.1:5000/mysql
docker rmi
刪除本地一個或多少鏡像
docker rmi -f 127.0.0.1:5000/mysql:v1