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 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 是一行行命令語句組成。
通常分爲四個部分:
基本鏡像信息、維護者信息、鏡像操做者、容器啓動指令
一、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 建立鏡像。