Docker
1.Docker產(chǎn)生的原因
傳統(tǒng)上認為,軟件編碼開發(fā)/測試結(jié)束后貌亭,所產(chǎn)出的成果即是程序或是能夠編譯執(zhí)行的二進制字節(jié)碼等(java為例)。
而為了讓這些程序可以順利執(zhí)行,開發(fā)團隊也得準備完整的部署文件篓跛,讓維運團隊得以部署應用程式,
開發(fā)需要清楚的告訴運維部署團隊坦刀,用的全部配置文件+所有軟件環(huán)境愧沟。不過蔬咬,即便如此,
仍然常常發(fā)生部署失敗的狀況沐寺。Docker鏡像的設計林艘,使得Docker得以打破過去「程序即應用」的觀念。
透過鏡像(images)將作業(yè)系統(tǒng)核心除外混坞,運作應用程式所需要的系統(tǒng)環(huán)境狐援,由下而上打包,達到應用程式跨平臺間的無縫接軌運作究孕。
2.Docker理念
Docker基于GO語言開發(fā)
Docker的主要目標是“Build咕村,Ship and Run Any App,Anywhere”,
也就是通過對應用組件的封裝蚊俺、分發(fā)懈涛、部署、運行等生命周期的管理泳猬,
使用戶的APP(可以是一個WEB應用或數(shù)據(jù)庫應用等等)及其運行環(huán)境能夠做到“一次封裝批钠,到處運行”。
只需要一次配置好環(huán)境得封,換到別的機子上就可以一鍵部署好埋心,大大簡化了操作
總結(jié):解決了運行環(huán)境和配置問題軟件容器,方便做持續(xù)集成并有助于整體發(fā)布的容器虛擬化技術(shù)忙上。
3.啟動Docker
啟動命令
docker run hello-world
3.1run干了什么?
3.2docker為什么比虛擬機快?
4.Docker常用命令
4.1Docker鏡像命令
幫助命令
docker version
docker info
docker help
列出本地主機上的鏡像
docker images [OPTIONS]
OPTIONS說明:
-a :列出本地所有的鏡像(含中間映像層)
-q :只顯示鏡像ID
--digests :顯示鏡像的摘要信息
--no-trunc :顯示完整的鏡像信息
各個選項說明:
REPOSITORY:表示鏡像的倉庫源
TAG:鏡像的標簽
IMAGE ID:鏡像ID
CREATED:鏡像創(chuàng)建時間
SIZE:鏡像大小
說明:
同一倉庫源可以有多個 TAG拷呆,代表這個倉庫源的不同個版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像疫粥。
如果你不指定一個鏡像的版本標簽茬斧,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像
查找鏡像
docker search [OPTIONS] 鏡像名字
OPTIONS說明:
--no-trunc : 顯示完整的鏡像描述
-s : 列出收藏數(shù)不小于指定值的鏡像
--automated : 只列出 automated build類型的鏡像
下載鏡像
docker pull 鏡像名字[:TAG]
刪除鏡像
刪除單個 docker rmi -f 鏡像ID
刪除多個 docker rmi -f 鏡像名1:[TAG] 鏡像名2:[TAG]
刪除全部 docker rmi -f $(docker images -qa)
補充
docker commit -m="提交的描述信息" -a="作者" 容器ID 要創(chuàng)建的目標鏡像名:[標簽名]
4.2Docker容器命令
有鏡像才能創(chuàng)建容器梗逮,這是根本前提(下載一個CentOS鏡像演示)
新建并啟動容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS說明(常用):有些是一個減號项秉,有些是兩個減號
--name="容器新名字": 為容器指定一個名稱;
-d: 后臺運行容器慷彤,并返回容器ID娄蔼,也即啟動守護式容器;
-i:以交互模式運行容器底哗,通常與 -t 同時使用岁诉;
-t:為容器重新分配一個偽輸入終端,通常與 -i 同時使用跋选;
-P: 隨機端口映射涕癣;
-p: 指定端口映射,有以下四種格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
啟動交互式容器
docker run -it 鏡像名字 /bin/bash
列出當前所有正在運行的容器
docker ps [OPTIONS]
OPTIONS說明(常用):
-a :列出當前所有正在運行的容器+歷史上運行過的
-l :顯示最近創(chuàng)建的容器野建。
-n:顯示最近n個創(chuàng)建的容器属划。
-q :靜默模式,只顯示容器編號候生。
--no-trunc :不截斷輸出同眯。
退出容器
exit 容器停止退出
ctrl+P+Q 容器不停止退出
啟動容器
docker start 容器ID或者容器名
重啟容器
docker restart 容器ID或者容器名
停止容器
docker stop 容器ID或者容器名
強制停止容器
docker kill 容器ID或者容器名
刪除已停止的容器
docker rm 容器ID
刪除多個容器
docker rm -f ($docker ps -a -q)
docker ps -a -q | xargs docker rm
啟動守護式容器*
docker run -d 容器名
查看容器日志
docker logs -f -t --tail 容器ID
* -t 是加入時間戳
* -f 跟隨最新的日志打印
* --tail 數(shù)字 顯示最后多少條
查看容器內(nèi)運行的進程
docker top 容器ID
查看容器內(nèi)部細節(jié)
docker inspect 容器ID
進入正在運行的容器并以命令行交互
docker exec -it 容器ID bashShell
重新進入docker attach 容器ID
上述兩個區(qū)別:
attach 直接進入容器啟動命令的終端,不會啟動新的進程
exec 是在容器中打開新的終端唯鸭,并且可以啟動新的進程
從容器內(nèi)拷貝文件到主機上
docker cp 容器ID:容器內(nèi)路徑 目的主機路徑