Docker簡介
Docker是在Linux容器里運行應(yīng)用的開源工具嚣镜,是一種輕量級的虛擬化方式激挪。Docker的設(shè)計宗旨是通過對應(yīng)用軟件的封裝辰狡、發(fā)布、部署垄分、運行等生命周期的管理搓译,達到應(yīng)用組件級別“一次封裝,到處運行”的目的锋喜。這里的組件可以是一個應(yīng)用些己,也可以是一套服務(wù),甚至可以使一個完整的操作系統(tǒng)嘿般。
Docker的優(yōu)勢
- Docker的容器技術(shù)可以在一臺主機上輕松地為任何應(yīng)用創(chuàng)建個輕量級的段标、可移植的、自給自足的容器炉奴。通過這種容器打包應(yīng)用程序逼庞,簡化了重新部署、調(diào)試這些瑣碎的重復(fù)工作瞻赶,極大地提高了工作效率赛糟。采用Docker容器技術(shù),遷移只需要在新的服務(wù)器上啟動需要的容器就可以砸逊。
- Dockerer容器很快璧南,啟動和停止可以在秒級實現(xiàn),比傳統(tǒng)虛擬機要快很多师逸。
- Docker核利用容器來實現(xiàn)類似VM的功能司倚,從而以更加節(jié)省的硬件資源提供,使得在一臺主機上同時運行數(shù)干個Docker容器成為可能篓像。
- Docker 操作方便动知,還可以通過Dockerfle配置鏡像文件,支持靈活的自動化創(chuàng)建和部署员辩。
Docker核心概念
1盒粮、鏡像(image)
Docker的鏡像是創(chuàng)建容器的基礎(chǔ),類似虛擬機的快照奠滑,可以理解為是一個面向Docker容器引擎的只讀模板丹皱,比如一個鏡像可以是一個完整的centos操作系統(tǒng)妒穴,也可以是一個安裝了MySQL的應(yīng)用程序,稱之為一個鏡像种呐。
鏡像文件用戶可以自己創(chuàng)建和更新現(xiàn)有鏡像,也可以從網(wǎng)上下載已經(jīng)做好的應(yīng)用鏡像直接使用弃甥。
2爽室、容器(Container)
容器是鏡像的另一個運行實例,是獨立運行的一個或一組應(yīng)用以及他們所必須的運行環(huán)境淆攻,包括文件系統(tǒng)阔墩、系統(tǒng)庫類、shell環(huán)境等瓶珊。鏡像是只讀模板啸箫,而容器會給這個只讀模板一個額外的可寫層。
3伞芹、倉庫(Repository)
倉庫是用來集中存放鏡像的地方忘苛,當自己創(chuàng)建了鏡像后,可以使用push命令將它上傳到公共倉庫(Public)或者私有倉庫(Private)唱较,這樣扎唾,當其他機器想要使用時,直接下載下來即可使用南缓。倉庫注冊服務(wù)器(Registry)是存放倉庫的地方胸遇,其中包含了多個庫,每個倉庫集中存放某一類鏡像汉形,并且使用不同的標簽來區(qū)分它們纸镊。
安裝Docker
安裝docker有兩種方式:其一:使用curl獲得docker的安裝腳本進行安裝;其二:使用docker自己的Yum源來安裝概疆。這里以yum源為例安裝docker逗威。
1.倉庫配置
vim /etc/yum.repos.d/docker.repo
[docker-repo]
name=Doker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
2.安裝docker
yum install docker-engine -y
3.啟動服務(wù)
systemctl start docker
systemctl enable docker.service #開機自啟動
4.鏡像加速
vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com" #官方提供的國內(nèi)鏡像加速器地址
],
"insecure-registries": []
}
5.重啟服務(wù)
systemctl daemon-reload
systemctl restart docker
6.查看docker版本
docker version
7.查看docker的默認存儲目錄
Docker鏡像操作:
Docker運行容器前需要本地存在對應(yīng)的鏡像。如果不存在本地鏡像岔冀,docker就會嘗試從默認鏡像倉庫(官方倉庫)https://hub.docker.com下載
1.搜索鏡像
命令格式:docker search 關(guān)鍵字
例如搜索關(guān)鍵字為lamp的鏡像
2.獲取鏡像
下載鏡像不指定標簽庵楷,默認下載最新版本的鏡像,也可以通過指定的標簽下載特定版本的鏡像楣颠。這里的標簽(tag)是用來區(qū)分鏡像版本的尽纽。
命令格式:docker pull 倉庫名稱[:標簽]
例如下載鏡像nickistre/centos-lamp
整個下載過程可以看出,鏡像文件由若干層(Layer)組成童漩,我們稱之為AUFS(文件聯(lián)合系統(tǒng))弄贿,是實現(xiàn)增量保存與更新的基礎(chǔ),下載過程中會輸出鏡像的各層信息
3.查看鏡像信息
命令格式:docker images 倉庫名稱[:標簽]
例如查看本地所有鏡像
REPOSITORY ---鏡像屬于的倉庫
TAG ---鏡像的標簽信息矫膨,標記同一個倉庫中不同鏡像
IMAGE ID ---鏡像的唯一ID號差凹,唯一標識了該鏡像
CREATED ---鏡像創(chuàng)建時間
SIZE ---鏡像大小
4.獲取鏡像詳細信息
命令格式:docker inspect 鏡像ID號
例如獲取鏡像的詳細信息
5.為本地鏡像添加新標簽
命令格式:docker tag 名稱[:標簽] 新名稱[:標簽]
例如本地鏡像 添加新的名稱為lamp期奔,新的標簽為lamp
6.刪除鏡像
命令格式:docker rmi 倉庫名稱:標簽 或者docker rmi 鏡像ID號
例如刪除鏡像lamp:lamp
注意:當一個鏡像有多個標簽的時候,docker rmi 命令只是刪除該鏡像多個標簽中的指定標簽危尿,不會影響鏡像文件呐萌。但當該鏡像只剩下一個標簽的時候,此時刪除該標簽的時候會徹底刪除該鏡像谊娇。
使用docker rmi 鏡像ID號命令時肺孤,必須確保該鏡像沒有被容器使用才能進行,刪除時系統(tǒng)會先刪除掉指向該鏡像的所有標簽济欢,然后刪除鏡像本身赠堵。如果該鏡像已經(jīng)被容器使用,正確的做法是先刪除依賴該鏡像的所有容器法褥,再刪除鏡像
7.存出鏡像和載入鏡像(鏡像遷移)
存出鏡像茫叭,也就是將鏡像保存成本地文件。
命令格式:docker save -o 存儲文件名 存儲的鏡像
例如將本地的鏡像存出為文件lamp
載入鏡像半等,也就是將導(dǎo)出的文件導(dǎo)入到其他機器的鏡像庫中
命令格式:docker load < 存出的文件 或者docker --input 存出的文件
例如從文件lamp中載入鏡像本地鏡像庫
8.上傳鏡像
本地存儲的鏡像越來越多揍愁,就需要指定一個專門的地方存放這些鏡像-倉庫。
命令格式:docker push 倉庫名稱:標簽
例如在公共倉庫上成功注冊了一個賬號杀饵,這個賬號叫做xiang10吗垮,新增的鏡像的標簽為xiang10/lamp:centos7
docker tag nickistre/centos-lamp xiang10/lamp:centos7
成功登陸后上傳鏡像
Docker容器操作
1.創(chuàng)建容器
創(chuàng)建容器就是將鏡像加載到到容器,新創(chuàng)建的容器默認處于停止狀態(tài)凹髓,不運行任何程序烁登。
命令格式:docker create [選項] 鏡像 運行的程序
-i 讓容器對的輸入保持打開
-t 讓Docker分配一個偽終端
2.查看容器的運行狀態(tài)
docker ps #查看所有容器的運行狀態(tài)
docker ps -a #查看最近一次啟動的容器的運行狀態(tài)
3.創(chuàng)建并啟動容器
可以直接執(zhí)行docker run命令
其運行過程:
1.檢查本地是否存在指定的鏡像,當鏡像不存在時蔚舀,會從公共倉庫下載饵沧;
2.利用鏡像創(chuàng)建并啟動容器;
3.執(zhí)行用戶指定的應(yīng)用程序赌躺;
4.執(zhí)行完畢后容器被中止運行
例如創(chuàng)建容器并啟動執(zhí)行一條shell命令
docker run centos /usr/bin/bash -c ls /
但有時候需要在后臺持續(xù)運行這個容器狼牺,就要讓docker以守護態(tài)在后臺運行,可以在docker run命令后添加“-d”選項實現(xiàn)礼患。那么是钥,容器運行的程序就不能結(jié)束。
docker run -d centos /usr/bin/bash -c "while true;do echo hello;done"
4.運行缅叠、中止容器
命令格式:docker start 容器的ID/名稱 #啟動停止狀態(tài)的容器
命令格式:docker stop 容器的ID/名稱 #中止運行狀態(tài)的容器
5.進入容器
當不進入容器時悄泥,容器運行完所執(zhí)行的程序后會自動停止,為了避免這樣的情況肤粱,我們需要進入容器執(zhí)行弹囚,且退出容器后,容器并不會停止领曼。
命令格式:docker exec -it 容器的ID/名稱 /bin/bash
-i 讓容器對的輸入保持打開
-t 讓Docker分配一個偽終端
6.導(dǎo)出與導(dǎo)入容器
導(dǎo)出容器鸥鹉,也就是將已經(jīng)創(chuàng)建好的容器容器導(dǎo)出為文件
命令格式:docker export 容器的ID/名稱 > 文件名
例如導(dǎo)出容器到文件centos7tar
導(dǎo)入容器蛮穿,也就是將導(dǎo)出文件傳輸?shù)狡渌麢C器
命令格式:cat 文件名| docker import - 生成的鏡像名稱:標簽
例如導(dǎo)入文件centos7tar成為本地鏡像
7.刪除容器
將一個已經(jīng)處于中止狀態(tài)的容器刪除
命令格式:docker rm 容器的ID/名稱
如果要刪除一個正在運行的容器,可以添加-f選項強制刪除毁渗,但建議先將容器停止再做刪除操作践磅。