對(duì)docker的理解
docker 是linux容器的管理引擎。
docker提供隔離的運(yùn)行環(huán)境。文件系統(tǒng)隔離、網(wǎng)絡(luò)隔離、進(jìn)程好隔離、進(jìn)程間通信
隔離。
docker容器分類(lèi)
1、系統(tǒng)類(lèi)容器 ubuntu、CentOs、Debian等操作系統(tǒng)容器
2、應(yīng)用容器 2048應(yīng)用容器
3、存儲(chǔ)類(lèi)容器 MySql、MongoDB容器
Docker依賴(lài)的Linux內(nèi)核特性
Namespaces命名空間、Controlgroups(cgroup)控制組
1、Namespaces命名空間:提供系統(tǒng)資源的隔離(進(jìn)程、文件系統(tǒng)、網(wǎng)絡(luò)...)
PID(ProcessID) 進(jìn)程隔離
NET(NetWork) 管理網(wǎng)絡(luò)接口
IPC(InterProcess Communitication) 管理跨進(jìn)程通信的訪問(wèn)
UTS(Unix Timesharing System) 隔離內(nèi)核和版本標(biāo)識(shí)
MNT(Mount) 管理掛載點(diǎn)(文件系統(tǒng))
2、Control Groups控制組:用來(lái)分配資源
資源限制
優(yōu)先級(jí)設(shè)定
資源計(jì)量
資源控制
Docker容器的能力
文件系統(tǒng)隔離:每個(gè)容器都有自己的root文件系統(tǒng)
進(jìn)程隔離:每個(gè)容器都運(yùn)行在自己的進(jìn)程環(huán)境中
網(wǎng)絡(luò)隔離:容器間的虛擬網(wǎng)絡(luò)接口和IP地址都是分開(kāi)的
資源隔離和分組:使用cgroups將CPU和內(nèi)存之類(lèi)的資源獨(dú)立分配給每個(gè)Docker容器
Docker的C/S模式
Docker是以客戶端和守護(hù)進(jìn)程的模式運(yùn)行的
Docker的C/S模式通過(guò)socket鏈接
unix:///var/run/docker.sock docker默認(rèn)的客戶端與守護(hù)進(jìn)程鏈接的方式
tcp://host:port
fd://socketfd
Docker的使用方法
1、使用非root用戶,好處是每次使用docker命令可以不再以root的身份運(yùn)行
sudo groupadd docker添加docker用戶組
sudo gpasswd -a ${USR} docker 將當(dāng)前用戶添加進(jìn)docker組中
sudo service docker restart 重新啟動(dòng)docker的用戶組
2、查看宿主主機(jī)收否運(yùn)行docker
ps -ef | grep docker
3、service管理命令
sudo service docker start 啟動(dòng)docker服務(wù)
sudo service docker stop 停止docker服務(wù)
sudo service docker restart 重啟docker服務(wù)
4、docker的啟動(dòng)選項(xiàng)
docker -d [OPTIONS]
-d 以守護(hù)形式運(yùn)行
5、與docker運(yùn)行相關(guān)的選項(xiàng):
-D, --debug=falsedebug模式的開(kāi)啟
-e, --exec-drive="native"docker運(yùn)行時(shí)使用的驅(qū)動(dòng)、模式
-g, --graph="/var/lib/docker" docker的目錄
--icc=true
-l, --log-level="info"日志級(jí)別
--label=[]
-p, --pidfile="/var/run/docker.pid"進(jìn)程id
6、ubuntu鏡像下載以及容器的創(chuàng)建和使用
docker pull ubuntu下載官方的最新版本鏡像
docker pull ubuntu:$VersionID 下載制定版本的鏡像
docker run -it --name $ContainerName ubuntu /bin/bash 創(chuàng)建一個(gè) 容器并進(jìn)入-i格式化輸出 -t生成一個(gè)偽終端與本地終端綁定 --name制定容器名稱(chēng)
docker start $ContainerName 啟動(dòng)一個(gè)已有的容器
docker stop $ContainerName 停止一個(gè)正在運(yùn)行的容器
docker exec -i -t $ContainerName /bin/bash 進(jìn)入一個(gè)正在運(yùn)行的容器
7、docker常用的一些命令
docker ps查看正在運(yùn)行的容器
docker ps -a查看已有的容器(包括正在運(yùn)行和已經(jīng)停止運(yùn)行的器)
docker search $Image:$VersionID 在官方的倉(cāng)庫(kù)中搜索目標(biāo)鏡像
docker rm $ContainerName刪除一個(gè)沒(méi)有運(yùn)行的容器(如果要?jiǎng)h除的容器正在運(yùn)行,要使用stop命令先停止容器運(yùn)行再刪除)
docker rm -v $ContainerName刪除容器是連同與容器綁定的數(shù)據(jù)卷一并刪除
docker rmi $Image刪除一個(gè)鏡像
docker --help 使用docker命令的幫助文檔可以快速的查找需要的參數(shù)
docker version 查看當(dāng)前使用的docker的版本信息
docker inspect $ContainerName/$Image查看容器或者鏡像的詳細(xì)數(shù)據(jù)信息(Json格式)
docker cp /LocalFilePath $Container:/ContainerFilePath將宿主主機(jī)指定路徑的文件拷貝到容器指定文件路徑
docker cp $Container:/ContainerFilePath /LocalFilePath將容器的指定路徑的文件拷貝到宿主主機(jī)的指定文件路徑
docker inspect -- format'{{.NetworkSettings.IPAddress}}'$ContainerName/$ContainerID查看容器的ip地址