docker基礎學習

 

 

  docker 介紹

  

  一、docker 是什麼 ?

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

  而後發佈到任何一個 linux 系統上面。java

 

  特色:

  docker 容器啓動和中止都很快,直接在宿主中能夠完成。mysql

  docker 容器佔用的系統資源少,一臺宿主能夠運行不少容器linux

  docker 操縱方便,簡單易學習sql

  docker 能夠經過 dockerfile 配置文件自動建立和部署。docker

  docker 容器也是沙箱機制的,相互徹底隔離shell

 

  三大核心概念 : 鏡像,容器,倉庫

 

  鏡像

  docker 鏡像相似於虛擬機鏡像,也能夠理解爲一個面向 docker 引擎的只讀模版。ubuntu

  鏡像是建立 docker 容器的基礎,鏡像能夠是一個系統( ubuntu鏡像 ),也能夠是一個應用程序( mysql 鏡像 )。bash

 

  獲取鏡像

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 

  過程:

  一、檢查是否存在本地鏡像,不存在到倉庫中獲取

  二、利用容器建立並啓動容器

  三、分配一個文件系統,並在只讀的鏡像層外面掛在一層可讀寫層

  四、從宿主的網橋中橋接一個虛擬接口到容器中

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

  六、執行指定到應用程序

  七、執行完畢

 

  參數:

  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 目錄。

 

 

  利用數據卷容器遷移數據

   一、備份數據

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

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

tar cvf  /backup/backup.tar  /dbdata

  打包數據tar

 

  二、恢復數據

tar xvf /backup/backup.tar

  解壓數據

 

 

 

  端口映射

docker run  -p 5000:30000  name  image

  p : 將本地端口映射到容器端口上

 

 

Dockerfile 建立鏡像 

 

  dockerfile 是一個文本格式的配置文件,能夠快速的建立自定義鏡像。

 

  基本結構

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

  通常分爲四個部分:

  基本鏡像信息、維護者信息、鏡像操做者、容器啓動指令

 

   配置

   一、FROM  <image[:tag]>

  指定配置的鏡像

 

  二、MAINTAINER  <name>

  做者名稱

 

  三、RUN  <command>

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

 

  四、CMD  [] <command>

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

 

  五、EXPOSE  ports

  暴漏執行端口,可外部訪問或者 -p 映射

  

  六、ENV  <key>  <value>

  指定環境變量,在配置全局可使用

 

  七、ADD/COPY  <src> <dest>

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

 

  八、ENTRYTRYOINT  <command>

  容器啓動後,執行到命令

 

  九、VOLUME ["data"]

  建立一個主機或者其餘數據卷掛載點

 

  十、USER daemon

  指定用戶名稱

 

  建立鏡像

  編寫完成 dockerfile 文件以後,能夠用 docker build 建立鏡像。 

相關文章
相關標籤/搜索