Docker 三大組件
倉(cāng)庫(kù):存放各種各樣已經(jīng)打包好的Docker應(yīng)用
鏡像:按照Docker的規(guī)則制作的應(yīng)用。類似操作系統(tǒng)iso前计,通過(guò)其完成各種應(yīng)用的部署
容器:兑徘;利用鏡像創(chuàng)建容器:?jiǎn)?dòng)預(yù)先定義好的進(jìn)程與用戶交互同廉,對(duì)提 供服務(wù)。類似虛擬機(jī)本身(可以啟動(dòng)指郁,停止忙上,刪除),一個(gè)鏡像可以創(chuàng)建多個(gè)名字不同的容器闲坎。
容器
create
docker create 創(chuàng)建一個(gè)新容器..
docker create ubuntu:latest
用docker create 容器處于停止?fàn)顟B(tài)疫粥,需docker start +容器ID 啟動(dòng)
run
Docker run :創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令
是docker create 和 docker start 組合-name 指定容器名字
-i讓容器標(biāo)準(zhǔn)輸入打開,通常與 -t 同時(shí)使用腰懂;
-t為容器重新分配一個(gè)偽輸入終端
-it以交互式進(jìn)入容器
-d 指定容器運(yùn)行于前臺(tái)還是后臺(tái)
-p 指定容器暴露的端口
-e 指定環(huán)境變量
--env 從指定文件讀入環(huán)境變量
--link添加鏈接到另一個(gè)容器
#啟動(dòng)centos里面的bash并且進(jìn)行交互式操作
docker run -it centos /bin/bash
#進(jìn)入該容器
docker exec -it ID /bin/bash
#進(jìn)入該容器梗逮,退出,容器會(huì)停止運(yùn)行
docker attach +ID /bin/bash
#沒(méi)有直接進(jìn)入該界面绣溜,其在后臺(tái)運(yùn)行
docker run -itd centos /bin/bash
#-name給容器自定義名字
docker run -itd --name web centos:latest bash
#--rm讓容器退出后直接刪除,(不能和-d使用)
docker run --rm -it centos bash -c "sleep 30"
#鏡像nginx:latest以后臺(tái)模式啟動(dòng)一個(gè)容器,將容器的80端口映射到主機(jī)的80端口,主機(jī)的目錄/data1映射到容器的/data
docker run -p 80:80 -v /data1:/data -d nginx:latest
attach/ exec
docker exec :進(jìn)入容器內(nèi)運(yùn)行命令
-d :分離模式: 在后臺(tái)運(yùn)行
-i :即使沒(méi)有附加也保持STDIN 打開
-t :分配一個(gè)偽終端以root身份進(jìn)入該容器慷彤,并啟動(dòng)一個(gè)bash,可以連續(xù)執(zhí)行命令
docker exec -it 容器名/ID /bin/bash
exit 退出docker attach進(jìn)入后臺(tái)運(yùn)行容器
docker attach 容器名/ID
Ctrl + q退出怖喻,容器也會(huì)停止attach與exec主要區(qū)別
attach直接進(jìn)入容器啟動(dòng)命令的終端底哗,不會(huì)啟動(dòng)新的進(jìn)程.T退出容器會(huì)停止而exec不會(huì)
exec 在容器中打開新的終端,并且可以啟動(dòng)新的進(jìn)程
rm
docker rm :刪除一個(gè)或多少容器
-f :通過(guò)SIGKILL信號(hào)強(qiáng)制刪除一個(gè)運(yùn)行中的容器
-v :-v 刪除與容器關(guān)聯(lián)的卷
# 刪除所有已經(jīng)停止的容器
docker rm $(docker ps -qa)
#批量刪除所有退出容器
docker rm $(docker -qa -f status=exited)
#殺死所有正在運(yùn)行的容器
docker kill $(docker ps -qa)
ps
docker ps 列出容器正在運(yùn)行顯 = docker container ls
-a 顯示所有的容器罢防,包括未運(yùn)行的
-q 顯示容器 ID
--no-trunc:顯示完整id號(hào)(128位)默認(rèn)顯示16位
-s 顯示容器文件大小
-l 最近創(chuàng)建容器
通常使用
docker ps -qa
pause/unpause
讓容器暫停工作且不占用CPU
暫停
docker pause +names
恢復(fù)
docker unpause +names
start/stop/restart/kill
docker start +names
docker stop +names
docker kill +names #快速終止
docker restart +names
#無(wú)論容器因何種原因退出艘虎,都立即重啟 --restart=always
docker run -d -restart=always httpd
#如果啟動(dòng)進(jìn)程退出代碼非0唉侄,則重啟容器咒吐,最多重啟3次
docker run -d --restart=on-failure:3 httpd
rename
docker rename 原容器名 新容器名
export/import
docker export導(dǎo)出容器,可以遷移到其他機(jī)器
docker import 將導(dǎo)入的文件属划。成為鏡像
將容器生成文件
docker export container_id>file.tar
cat file.tar|docker import – wu #生成wu鏡像
docker基本信息
顯示 容器 詳細(xì)信息
docker inspect 容器
獲取容器的運(yùn)行歷史信息
docker logs +容器
-f 跟蹤守護(hù)式容器的日志
-s 最新日志eg:
docker run -d centos bash -c "while:;do ehco "123";sleep 1;done"
docker logs +ID #會(huì)顯示123
可用docker stop ID 終止掉
docker top 容器進(jìn)程
docker top + 容器
docker stats 容器占用系統(tǒng)資源情況
docker diff containerID
列出改動(dòng)了容器的存儲(chǔ)層
顯示一個(gè)鏡像的歷史
docker version #查看版本
docker info //查看docker系統(tǒng)的信息
鏡像
images
docker images : 列出本地鏡像 或 docker image ls (--help)
-a 顯示所有鏡像
-q 只顯示鏡像ID
--no-trunc :顯示完整的鏡像信息
#列出鏡像
docker images
#顯示具體鏡像信息
docker images hello-world
#直接列出鏡像包含鏡像ID和倉(cāng)庫(kù)名
docker images --format "{{.ID}}: {{.Repository}}"
pull
docker pull : 從鏡像倉(cāng)庫(kù)中拉忍裉尽(下載)或者更新指定鏡像
格式:docker pull [選項(xiàng)] [Docker Registry地址]<倉(cāng)庫(kù)名>:<標(biāo)簽>
#從docker hub拉取ubuntu鏡像
docker pull ubuntu \\默認(rèn)下載最新
docker pull Ubuntu:14.04 \\指定下載版本
#從私有庫(kù)拉取ubuntu鏡像
docker pull 192.168.200.11:5000/ubuntu/14.04.3.tar:latest
#3 從hub.c.163.com倉(cāng)庫(kù)拉取鏡像
docker pull hub.c.163.com/library/mysql:latest
:latest 標(biāo)記最新版本
本地鏡像都保存在docker宿主機(jī)的/var/lib/docker目錄下
push
docker push + name 上傳鏡像到倉(cāng)庫(kù)(默認(rèn)上傳到DockerHub官方倉(cāng)庫(kù))
# 將本地鏡像test:latest 添加新的標(biāo)簽user/test:latest
docker tag test:latest user/test:latest
docker push user/test:latest
save/load
docker save:把現(xiàn)有鏡像,導(dǎo)出一個(gè)文件
docker load:將該文件恢復(fù)本地鏡像
#把現(xiàn)有鏡像同眯,導(dǎo)出一個(gè)文件
docker save -o aming-centos.tar aming/centos(現(xiàn)有鏡像或ID都行)
#使用該文件恢復(fù)本地鏡像
docker load < aming-centos.tar
commit
運(yùn)行容器時(shí)绽昼,做的任何文件修改都會(huì)被記錄于容器存儲(chǔ)層里。且docker commit 须蜗,可以將容器的存儲(chǔ)層保存下來(lái)成為鏡像
增量的生成一個(gè)鏡像硅确。將容器保存為一個(gè)鏡像(可標(biāo)注鏡像名和作者信息)當(dāng)沒(méi)有鏡像名也成懸掛鏡像
docker commit :從容器創(chuàng)建一個(gè)新的鏡像。
格式:docker commit [選項(xiàng)] <容器ID或容器名> [<倉(cāng)庫(kù)名>[:<標(biāo)簽>]]
-a :提交的鏡像作者明肮;
-c :使用Dockerfile指令來(lái)創(chuàng)建鏡像菱农;
-m :提交時(shí)的說(shuō)明文字;
-p :在commit時(shí)柿估,將容器暫停循未。
-q 顯示Image ID
--no-trunc 顯示完整長(zhǎng)度Image ID步驟
- 運(yùn)行容器
- 修改容器
- 將容器保存為新的鏡像
運(yùn)行ubuntu鏡像,并進(jìn)入交互模式
docker run –it centos –name wzs
yum –y install vim #在centos鏡像中添加vim工具
docker ps #查看容器名
docker commit +容器名 +自定義名
docker images #查看鏡像
#將容器保存為鏡像
docker commit \
--author "Tao Wang <twang2218@gmail.com>" \
--message "修改了默認(rèn)網(wǎng)頁(yè)" \
webserver \
nginx:v2
#或者
docker commit -a “wzs” -m “install httpd” +ID(寫前幾位就行) +新容器名字