1. 程式人生 > >docker基礎學習一

docker基礎學習一

 

 

  docker 介紹

  

  1、docker 是什麼 ?

  docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴到一個可移植的容器中。

  然後釋出到任何一個 linux 系統上面。

 

  特點:

  docker 容器啟動和停止都很快,直接在宿主中可以完成。

  docker 容器佔用的系統資源少,一臺宿主可以執行很多容器

  docker 操縱方便,簡單易學習

  docker 可以通過 dockerfile 配置檔案自動建立和部署。

  docker 容器也是沙箱機制的,相互完全隔離

 

  三大核心概念 : 映象,容器,倉庫

 

  映象

  docker 映象類似於虛擬機器映象,也可以理解為一個面向 docker 引擎的只讀模版。

  映象是建立 docker 容器的基礎,映象可以是一個系統( ubuntu映象 ),也可以是一個應用程式( mysql 映象 )。

 

  獲取映象

docker pull  name[:tag]

  開發者可以通過 docker pull 來獲取對應的映象。

 

  檢視映象資訊

docker images

  列出所有的映象列表。

  展示映象的概要資訊,瞭解當前所有的映象。

 

  檢視具體映象資訊

docker inspect imageID

  獲取某一個映象的詳細資訊。

 

  搜尋映象

docker search  name

  在倉庫中查詢某一個映象。

 

  刪除映象

docker rmi name

  刪除某一個映象。

 

  建立映象

  建立映象有三種方法:基於已有映象的容器建立、基於本地模版匯入、基於 dockerfile 建立

  

  基礎已有映象容器建立

docker commit [options]  containerId [imageName[:tag]]

  建立一個容器:

  options :a ( 作者名稱 )、m( 提交資訊 )、p( 建立時候暫停 )

  containerId :容器的id

  imageName[:tag] : 名稱和標籤

 

  直接匯入模版檔案建立映象

docker import  tpl

  

  存出和載入映象

  儲存可以將映象儲存為本地檔案

  載入將本地檔案匯入為一個本地映象

 

  上傳映象

docker push name[:tag]

  建立本地映象到倉庫中。

 

 

 

 

  容器

  docker 容器類似一個輕量級的沙箱,docker 利用容器來隔離和執行應用。

  容器是通過映象建立例項來的,在宿主中可以實現啟動、停止、刪除等操作,且容器相互隔離不受影響。

 

  建立容器

docker create name[:tag]

  建立了容器但是沒有啟動它。

  可以通過 docker start name 來啟動容器

 

  新建並啟動容器

docker run  name

  相當於:docker create  -->   docker start 

  過程:

  1、檢查是否存在本地映象,不存在到倉庫中獲取

  2、利用容器建立並啟動容器

  3、分配一個檔案系統,並在只讀的映象層外面掛在一層可讀寫層

  4、從宿主的網橋中橋接一個虛擬介面到容器中

  5、從地址池配置一個 IP 地址給容器

  6、執行指定到應用程式

  7、執行完畢

 

  引數:

  t :分配一個偽終端

  i :標準的輸入

  d : 後臺執行

  

  進入容器

docker exec -it  containerID /bin/bash

  nesnter 工具

  需要下載工具,並且連結 docker 

  

  刪除容器

docker rm containerID

  

  docker 倉庫

  docker 倉庫類似於程式碼倉庫,是 docker 集中存放映象檔案的位置。

 

 

  資料卷

  

  建立資料卷

docker run -d -p --name  -v /container/dir:/local/dir  imageName

  

  -v : 建立一個數據卷。

  一個宿主目錄和容器目錄的對映。

 

 

  建立資料卷容器

docker run-it -v /local/dbdata  --name con1  ubuntu

 

  共享資料卷容器

docker run -it --volumes-from con1 --name con2 ubuntu

  

   con1 和 con2  同時共享 /dbdata 目錄。

 

 

  利用資料卷容器遷移資料

   1、備份資料

docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu 

  建立一個容器且掛在到 dbdata 上面,-v 建立資料卷

tar cvf  /backup/backup.tar  /dbdata

  打包資料tar

 

  2、恢復資料

tar xvf /backup/backup.tar

  解壓資料

 

 

 

  埠對映

docker run  -p 5000:30000  name  image

  p : 將本地埠對映到容器埠上

 

 

Dockerfile 建立映象 

 

  dockerfile 是一個文字格式的配置檔案,可以快速的建立自定義映象。

 

  基本結構

  dockerfile 是一行行命令語句組成。

  一般分為四個部分:

  基本映象資訊、維護者資訊、映象操作者、容器啟動指令

 

   配置

   1、FROM  <image[:tag]>

  指定配置的映象

 

  2、MAINTAINER  <name>

  作者名稱

 

  3、RUN  <command>

  在 shell 執行命令,即 /bin/bash  -c

 

  4、CMD  [] <command>

  執行命令,只會執行最後一條

 

  5、EXPOSE  ports

  暴漏執行埠,可外部訪問或者 -p 對映

  

  6、ENV  <key>  <value>

  指定環境變數,在配置全域性可以使用

 

  7、ADD/COPY  <src> <dest>

  指定本地的連結到容器目錄

 

  8、ENTRYTRYOINT  <command>

  容器啟動後,執行到命令

 

  9、VOLUME ["data"]

  建立一個主機或者其他資料卷掛載點

 

  10、USER daemon

  指定使用者名稱稱

 

  建立映象

  編寫完成 dockerfile 檔案之後,可以用 docker build 建立映象。