對(duì)docker的理解
docker 是linux容器的管理引擎。
docker提供隔離的運(yùn)行環(huán)境屡穗。文件系統(tǒng)隔離贴捡、網(wǎng)絡(luò)隔離、進(jìn)程好隔離村砂、進(jìn)程間通信
隔離栈暇。
docker容器分類
1、系統(tǒng)類容器 ubuntu箍镜、CentOs源祈、Debian等操作系統(tǒng)容器
2、應(yīng)用容器 2048應(yīng)用容器
3色迂、存儲(chǔ)類容器 MySql香缺、MongoDB容器
Docker依賴的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地址都是分開的
資源隔離和分組:使用cgroups將CPU和內(nè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=false
debug模式的開啟
-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
制定容器名稱
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è)沒有運(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地址