目錄
一、Docker 容器操作
1.1容器創(chuàng)建
1.2查看容器的運(yùn)行狀態(tài)
1.3啟動容器
1.4創(chuàng)建并啟動容器
1.4.1當(dāng)利用 docker run 來創(chuàng)建容器時, Docker 在后臺的標(biāo)準(zhǔn)運(yùn)行過程是:
1.4.2在后臺持續(xù)運(yùn)行 docker run 創(chuàng)建的容器
1.4.3創(chuàng)建容器并持續(xù)運(yùn)行容器
1.5查看容器的ip地址
1.6docker容器生命周期
1.7容器的進(jìn)入
1.8停止容器
1.9宿主機(jī)的文件與容器內(nèi)部文件復(fù)制問題
1.9.1復(fù)制到容器中
1.9.2從容器復(fù)制文件到主機(jī)
1.10容器的導(dǎo)出與導(dǎo)入
1.10.1容器導(dǎo)出格式
1.10.2容器導(dǎo)入格式
1.11刪除容器
1.11.1刪除已經(jīng)終止?fàn)顟B(tài)的容器
1.11.2強(qiáng)制刪除正在運(yùn)行的容器
1.11.3批量停止所有容器
1.11.4批量停止所有容器
1.11.5批量刪除所有容器
1.11.6批量刪除鏡像
一、Docker 容器操作
1.1容器創(chuàng)建
- 容器創(chuàng)建:就是將鏡像加載到容器的過程
- 新創(chuàng)建的容器默認(rèn)處于停止?fàn)顟B(tài),不運(yùn)行任何程序,需要在其中發(fā)起一個進(jìn)程來啟動容器
格式:docker create [選項] 鏡像
常用選項:
-i:讓容器開啟標(biāo)準(zhǔn)輸入
-t:讓 Docker 分配一個偽終端 tty
-it :合起來實現(xiàn)和容器交互的作用,運(yùn)行一個交互式會話 shell?
docker create -it nginx:latest /bin/bash
1.2查看容器的運(yùn)行狀態(tài)
#查看容器的運(yùn)行狀態(tài)
docker ps -a #-a 選項可以顯示所有的容器
1.3啟動容器
格式:docker start 容器的ID/名稱
1.4創(chuàng)建并啟動容器
- 可以直接執(zhí)行 docker run 命令, 等同于先執(zhí)行 docker create 命令,再執(zhí)行 docker start 命令
- 注意:容器是一個與其中運(yùn)行的 shell 命令共存亡的終端,命令運(yùn)行容器運(yùn)行, 命令結(jié)束容器退出
docker 容器默認(rèn)會把容器內(nèi)部第一個進(jìn)程,也就是 pid=1 的程序作為docker容器是否正在運(yùn)行的依據(jù),如果docker容器中 pid = 1 的進(jìn)程掛了,那么docker容器便會直接退出,也就是說Docker容器中必須有一個前臺進(jìn)程,否則認(rèn)為容器已經(jīng)掛掉
/var/lib/docker
1.4.1當(dāng)利用 docker run 來創(chuàng)建容器時, Docker 在后臺的標(biāo)準(zhǔn)運(yùn)行過程是:
(1)檢查本地是否存在指定的鏡像。當(dāng)鏡像不存在時,會從公有倉庫下載;
(2)利用鏡像創(chuàng)建并啟動一個容器;
(3)分配一個文件系統(tǒng)給容器,在只讀的鏡像層外面掛載一層可讀寫層;
(4)從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個虛擬機(jī)接口到容器中;
(5)分配一個地址池中的 IP 地址給容器;
(6)執(zhí)行用戶指定的應(yīng)用程序,執(zhí)行完畢后容器被終止運(yùn)行。
docker run -itd nginx:latest /bin/bash
#-d選項,讓程序再后臺持續(xù)運(yùn)行
docker run centos:7 /usr/bin/bash -c ls -lh /
#沒有-d選項,執(zhí)行完退出,-c選項可以將命令發(fā)送到容器中運(yùn)行
docker run -d centos:7 /bin/bash -c "while true;do echo ydq;done"
#執(zhí)行循環(huán)造成進(jìn)程運(yùn)行,但是會持續(xù)增加壓力
- -i:表示標(biāo)準(zhǔn)輸入
- -t:指定一個偽終端(環(huán)境)
- -d:開啟守護(hù)進(jìn)程(后臺運(yùn)行)
docker run centos:7 /usr/bin/bash -c ls /
docker ps -a?? ???#會發(fā)現(xiàn)創(chuàng)建了一個新容器并啟動執(zhí)行一條 shell 命令,之后就停止了
docker ps -a?? ???#會發(fā)現(xiàn)創(chuàng)建了一個新容器并啟動執(zhí)行一條 shell 命令,之后就停止了
詳細(xì)解釋下哦
1.4.2在后臺持續(xù)運(yùn)行 docker run 創(chuàng)建的容器
需要在 docker run 命令之后添加 -d 選項讓 Docker 容器以守護(hù)形式在后臺運(yùn)行。
并且容器所運(yùn)行的程序不能結(jié)束
while true死循環(huán)
查看cpu
停止容器
cpu就減下來了
1.4.3創(chuàng)建容器并持續(xù)運(yùn)行容器
docker run -itd --name test1 centos:7 /bin/bash ? #創(chuàng)建容器并持續(xù)運(yùn)行容器
1.5查看容器的ip地址
#要查看IP地址,需要開啟一個容器,才會進(jìn)行分配IP地址
docker inspect 【容器ID】
#查看指定id的詳細(xì)信息
1.6docker容器生命周期
docker容器七個狀態(tài)
- cerated已創(chuàng)建 、還未運(yùn)行的容器
- running:正在運(yùn)行中的容器
- restarting:容器正在重啟中
- removeing:容器正在遷移中
- paused:已暫停狀態(tài)的容器
- exited:停止?fàn)顟B(tài)的容器
- dead 死亡 主要是操作系統(tǒng)出現(xiàn)異常 或 斷點關(guān)機(jī)等有可能引發(fā)dead狀態(tài) ,但是 不是很常見
暫停和停止?fàn)顟B(tài)的區(qū)別:
- paused 命令掛起指定的容器中的所有進(jìn)程為暫停,
- stop:表示殺掉正在運(yùn)行的docker容器進(jìn)程,默認(rèn)是10s后
1.7容器的進(jìn)入
需要進(jìn)入容器進(jìn)行命令操作時,可以使用 docker exec 命令進(jìn)入運(yùn)行著的容器
需要進(jìn)入容器進(jìn)行命令操作時,可以使用docker exec 命令進(jìn)入運(yùn)行著的容器
格式:docker exec -it 容器ID/名稱 /bin/bash
-i :選項表示讓容器的輸入保持打開
-t :選項表示讓Docker分配一個偽終端
#容器的進(jìn)入
需要進(jìn)入容器進(jìn)行命令操作時,可以使用 docker exec 命令進(jìn)入運(yùn)行著的容器。
格式:docker exec -it 容器ID/名稱 /bin/sh
-i 選項表示讓容器的輸入保持打開;
-t 選項表示讓 Docker 分配一個偽終端。
docker start 容器id #進(jìn)入容器前,確保容器正在運(yùn)行
docker exec -it 容器id /bin/sh
ls
exit #退出容器后,容器仍在運(yùn)行
docker ps -a
臨時進(jìn)入容器
docker run -it centos:7 bash ? ? ?#不加 -d 選項會創(chuàng)建容器后直接進(jìn)入容器,但是退出容器,容器也會停止
docker run -it 會創(chuàng)建前臺進(jìn)程,但是會輸入exit后會終止進(jìn)程
dcoker attach 會通過連接stdin,連接到容器內(nèi)輸入輸出流,會再輸出exit后終止容器操作
docker exec -it 會連接到容器,可以像SSH一樣進(jìn)入容器內(nèi)部,進(jìn)行操作,可以通過exit退出容器,但不影響容器運(yùn)行。
1.8停止容器
docker stop 【容器ID】
或
docker kill 【容器ID】
#stop和kill的區(qū)別
使用kill是直接關(guān)閉這個容器的進(jìn)程,如果有正在運(yùn)行的文件,那么可能造成數(shù)據(jù)丟失。
使用stop是給容器發(fā)出一個退出的信號,相當(dāng)于給容器一些緩沖的余地。保存好自己的文件,然后再關(guān)閉。
1.9宿主機(jī)的文件與容器內(nèi)部文件復(fù)制問題
linux 怎么復(fù)制
cp 原文件路徑目標(biāo)文件路徑
docker cp l opt / abc容器id: /opt/abc
#======復(fù)制到容器中
echo abc123 > ~/test.txt
docker cp ~/test.txt 2592d3fad0fb:/opt/
#從容器復(fù)制文件到主機(jī)
docker cp 2592d3fad0fb:/opt/test.txt ~/abc123.txt
1.9.1復(fù)制到容器中
1.9.2從容器復(fù)制文件到主機(jī)
1.10容器的導(dǎo)出與導(dǎo)入
- 用戶可以將任何一個 Docker 容器從一臺機(jī)器遷移到另一臺機(jī)器。
- 在遷移過程中,可以使用docker export 命令將已經(jīng)創(chuàng)建好的容器導(dǎo)出為文件,無論這個容器是處于運(yùn)行狀態(tài)還是停止?fàn)顟B(tài)均可導(dǎo)出。
- 可將導(dǎo)出文件傳輸?shù)狡渌麢C(jī)器,通過相應(yīng)的導(dǎo)入命令實現(xiàn)容器的遷移
#導(dǎo)出格式:docker export 容器ID/名稱 > 文件名
docker export 2592d3fad0fb > centos7.tar
#導(dǎo)入格式:cat 文件名 | docker import – 鏡像名稱:標(biāo)簽
cat centos7.tar | docker import - centos7:test?? ??? ??? ?#導(dǎo)入后會生成鏡像,但不會創(chuàng)建容器
1.10.1容器導(dǎo)出格式
格式:docker export 容器ID/名稱 > 文件名
docker export 2592d3fad0fb > centos7.tar
1.10.2容器導(dǎo)入格式
導(dǎo)入格式:cat 文件名 | docker import – 鏡像名稱:標(biāo)簽
cat centos7.tar | docker import - centos7:test?? ??? ??#導(dǎo)入后會生成鏡像,但不會創(chuàng)建容器
導(dǎo)入后為鏡像,還需額外創(chuàng)建容器,需要注意的是創(chuàng)建容器的時候需要額外添加容器啟動命令
1.11刪除容器
格式:docker rm [-f] 容器ID/名稱
docker stop 容器ID
docker rm 2592d3fad0fb?? ??? ??? ??? ?#刪除已經(jīng)終止?fàn)顟B(tài)的容器
docker rm -f 2592d3fad0fb?? ??? ??? ?#強(qiáng)制刪除正在運(yùn)行的容器
docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash?? ??? ??? ?#批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop
docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash?? ??? ??? ??? ?#批量刪除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm
docker images | awk 'NR>=2{print "docker rmi "$3}'| bash?? ??? ??? ?#批量刪除鏡像
docker images | grep none | awk '{print $3}' | xargs docker rmi?? ??? ?#刪除none鏡像
docker rm $(docker ps -a -q)?? ??? ?#批量清理后臺停止的容器
1.11.1刪除已經(jīng)終止?fàn)顟B(tài)的容器
docker rm 容器ID
1.11.2強(qiáng)制刪除正在運(yùn)行的容器
docker rm -f 容器ID #強(qiáng)制刪除正在運(yùn)行的容器
docker rm -f? 容器名稱
1.11.3批量停止所有容器
1.11.4批量停止所有容器
1.11.5批量刪除所有容器
docker ps -a |awk 'NR>=2{print "docker rm "$1}'|bash
法一:
docker ps -a |awk 'NR>=2 {print $1}' | xargs docker rm
#查看容器運(yùn)行狀態(tài)從第二行開始查看第一個字段并將結(jié)果傳參給docker rm 刪除
法二:
docker rm $(docker ps -aq)
#將命令的結(jié)果付給變量進(jìn)行刪除
1.11.6批量刪除鏡像
總結(jié):
1、docker是什么,能做什么
開源的容器引擎,可以在任何主機(jī)上運(yùn)行容器應(yīng)用,實現(xiàn)“一次封裝,到處運(yùn)行”的目的。
2、docker三個核心概念
鏡像、容器、倉庫
3、鏡像管理命令
?
docker search <倉庫/鏡像名> #搜索鏡像
docker pull <倉庫/鏡像名> #獲取鏡像
docker images #查看本地鏡像
docker inspect <鏡像ID> #查看鏡像的詳細(xì)信息
docker rmi <鏡像ID/鏡像名稱:標(biāo)簽> -f #刪除鏡像
docker save -o 鏡像文件.tar 鏡像名稱:標(biāo)簽 #生成鏡像文件
docker load -i[或<] 鏡像文件 #加載鏡像文件
docker push 倉庫名/鏡像名:標(biāo)簽 #推送鏡像到倉庫
docker tag 庫名:標(biāo)簽 新庫名/新標(biāo)簽 #修改庫名及標(biāo)簽
4、容器管理命令文章來源:http://www.zghlxwxcb.cn/news/detail-861195.html
docker create -i [–name=容器名稱] 鏡像名:標(biāo)簽 #鏡像名創(chuàng)建容器
docker create -it [–name=容器名稱] 鏡像名 <命令> #創(chuàng)建容器并導(dǎo)入命令
docker start <容器ID/名稱> #啟動容器
docker stop <容器ID/名稱> #停止容器
docker ps -q #查詢運(yùn)行狀態(tài)的容器
docker ps -a #查詢所有容器
docker rm [-f] <容器ID/名稱> #刪除容器 (-f 強(qiáng)制刪除正在運(yùn)行的容器)
docker rm $(docker ps -aq) #刪除所有容器
docker run [–name] -id #啟動容器
docker exec -it 容器ID/名稱 bash #進(jìn)入容器
docker run -it 容器ID/名稱 bash #啟動時進(jìn)入容器
docker cp 宿主機(jī)文件 容器ID:容器目錄 #將宿主機(jī)的文件復(fù)制到容器中
docker cp 容器ID:容器目錄/文件 宿主機(jī)目錄 #將容器中的文件復(fù)制到宿主機(jī)中
docker export 容器ID/名稱 > 文件名 #將容器導(dǎo)出為文件
cat 文件名 | docker import - 鏡像名稱:標(biāo)簽 #將導(dǎo)出的容器文件,導(dǎo)入生成鏡像
5、docker?文章來源地址http://www.zghlxwxcb.cn/news/detail-861195.html
docker version
#查看版本
docker info
#查看docker詳細(xì)信息
到了這里,關(guān)于探索開源的容器引擎--------------Docker容器操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!