容器與管理程序虛擬化(HV)有所有不同。管理程序虛擬化能過(guò)中間層將一對(duì)吧或多臺(tái)獨(dú)立的機(jī)器虛擬運(yùn)行于物理硬件之上,而容器則是直接運(yùn)行在操作系統(tǒng)內(nèi)核之上的用戶空間。
和傳統(tǒng)的虛擬化及半虛擬化相比,容器運(yùn)行不需要模擬層和管理層,而是使用操作系統(tǒng)的系統(tǒng)調(diào)用接口。這降低了單個(gè)容器所需要的開(kāi)銷。也使得可以運(yùn)行更多的容器。
Docker 鼓勵(lì)面向服務(wù)的架構(gòu)和微服務(wù)架構(gòu)
Docker For Mac
右鍵點(diǎn)擊桌面頂欄的 docker 圖標(biāo),選擇 Preferences ,在 Advanced 標(biāo)簽下的 Registry mirrors 列表中加入下面的鏡像地址:
http://5ca5f1e4.m.daocloud.ioCopy
點(diǎn)擊 Apply & Restart 按鈕使設(shè)置生效。
運(yùn)行第一個(gè)容器
docker run -i -t ubuntu /bin/bash
run命令提供了Docker容器的創(chuàng)建到啟動(dòng)的功能。 -i標(biāo)志保證容器中STDIN是開(kāi)始的,-t標(biāo)志則是為創(chuàng)建的容器分配一個(gè)偽tty終端
輸入exit退出容器
可以使用docker run 「容器的名字或容器ID」來(lái)重啟已經(jīng)停止的容器,并且會(huì)沿用run命令時(shí)指定的參數(shù)來(lái)運(yùn)行,因此會(huì)運(yùn)行一個(gè)交互式的會(huì)試的shell,我們可以用docker attach [name | ID]命令,重新附著到該容器的會(huì)話上。
docker ps -a //查看己創(chuàng)建的容器 docker ps --help 來(lái)得到更多信息
連接到容器后,輸入hostname,發(fā)現(xiàn)其值就是容器的ID
創(chuàng)建守護(hù)式容器
沒(méi)有交互式的會(huì)話,,非常適合運(yùn)行應(yīng)用程序和服務(wù)。
docker run --name daemon_dave_centos -d centos /bin/sh -c "while true; do echo helllo world; sleep 1; done"
docker logs daemon_dave_centos //發(fā)現(xiàn)一直在打印hellow world
docker logs -f daemon_dave_centos //-f命令與 tail -f 命令相似
logs --tail 0 -f daemon_dave_centos // --tail 后面指定條數(shù),0表示最新,10表示 從最近10條
docker top daemon_dave_centos //查看容器內(nèi)的進(jìn)程
在容器內(nèi)運(yùn)行進(jìn)程
Docker 1.3 后可以用docker exec命令在容器外啟動(dòng)新進(jìn)程
//-d表示需要運(yùn)行一個(gè)后臺(tái)進(jìn)程
docker exec -d daemon_dave_centos touch /etc/new_config_file
docker exec -t -i daemon_dave_centos /bin/bash
停止守護(hù)式容器
docker stop 【name | ID】
自動(dòng)重啟容器
--restart 標(biāo)志會(huì)檢查容器退出代碼,并據(jù)此來(lái)決定是否需要那我還是啟容器。默認(rèn)行為是Docker不檢查
深入容器
docker inspect [name |ID] 來(lái)獲取更多容器信息
刪除容器
如果容器不在使用,可用docker rm 命令刪除它們
docker rm [name | ID]
//可通過(guò)以下方式刪除所有
docker rm docker ps -a -q