1.docker 容器創(chuàng)建流程
?
2.容器運(yùn)行本質(zhì)
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
創(chuàng)建容器基本選項(xiàng):
--name:為容器命名
-i:交互式創(chuàng)建容器
-d:后臺(tái)創(chuàng)建容器
-t:為容器分配偽終端
Docker 容器存在的意義就是為了運(yùn)行容器中的應(yīng)用,對(duì)外提供服務(wù),所以啟動(dòng)容器的目的就是啟動(dòng)運(yùn)行該容器中的應(yīng)用。容器中的應(yīng)用運(yùn)行完畢后,容器就會(huì)自動(dòng)終止。所以如果不想讓容器啟動(dòng)后立即終止運(yùn)行,則就需要使容器應(yīng)用不能立即結(jié)束。通常采用的方式有兩種,使應(yīng)用處于與用戶交互的狀態(tài)或等待狀態(tài)。
3.docker run
從鏡像創(chuàng)建并運(yùn)行一個(gè)新容器
格式:文章來源地址http://www.zghlxwxcb.cn/news/detail-626067.html
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
創(chuàng)建一個(gè)centos7.9鏡像
[root@localhost ~]# docker run -it --name centos7 centos:7.9.2009
[root@4c392a1a06d7 /]#
#前臺(tái)退出容器 ctrl+p+q
[root@localhost ~]# docker ps -a
CONTAINER ID ? IMAGE ? ? ? ? ? ? COMMAND ? ? ? CREATED ? ? ? ? STATUS ? ? ? ? PORTS ? ? NAMES
4c392a1a06d7 ? centos:7.9.2009 ? "/bin/bash" ? 11 seconds ago ? Up 10 seconds ? ? ? ? ? ? centos7
前臺(tái)退出容器快捷鍵 ctrl+p+q 容器在后臺(tái)運(yùn)行
4.docker exec
在正在運(yùn)行的容器中執(zhí)行命令
格式:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
選項(xiàng):
--detach,-d:分離模式:在后臺(tái)執(zhí)行命令
--detach-keys:覆蓋分離容器的鍵序列
--env -e:設(shè)置環(huán)境變量
--env-file:讀寫一個(gè)環(huán)境變量文件
--interactive,-i:保持STDIN打開,即使沒有連接
--privileged:賦予命令擴(kuò)展權(quán)限
--tty,-t:分配一個(gè)偽終端
--user,-u;用戶名或UID(格式:< name| UID >[:<group|gid>])
--workdir,-w:容器內(nèi)的工作目錄
進(jìn)入centos7容器中
[root@localhost ~]# docker exec -it -w /tmp centos7 /bin/bash
[root@4c392a1a06d7 tmp]# pwd
/tmp
docker attach
將本地標(biāo)準(zhǔn)輸入、輸出和錯(cuò)誤流附加到正在運(yùn)行的容器
格式:
docker attach [OPTIONS] CONTAINER
docker exec 與 docker attach的區(qū)別?
-
docke exec會(huì)新建一個(gè)進(jìn)程來訪問容器進(jìn)程,一般與-it選項(xiàng)聯(lián)合使用,一般使用exit命令退出i并終止當(dāng)前進(jìn)程
-
docker attach不會(huì)新建進(jìn)程,而是進(jìn)入容器原有的進(jìn)程,根據(jù)情況可以使用exit或者ctrl+p+q來進(jìn)行退出容器
5.docker ps
列表容器
格式:
docker ps [OPTIONS]
選項(xiàng):
-a,-all:顯示所有容器(默認(rèn)顯示正在運(yùn)行) -f:根據(jù)提供的條件過濾輸出 --latest,-l:顯示最新創(chuàng)建的容器(包括所有狀態(tài)) --no-trunc:不要截?cái)噍敵?--quiet,-q:只顯示容器id --size,-s:顯示總文件大小
注意:docker ps不支持容器間的文件復(fù)制傳遞
6.docker top
顯示容器的運(yùn)行進(jìn)程
格式:
docker top CONTAINER [ps OPTIONS]
7.docker 容器管理
啟動(dòng)
docker start [OPTIONS] CONTAINER [CONTAINER...]
停止
docker stop [OPTIONS] CONTAINER [CONTAINER...]
?
#強(qiáng)制停止
docker kill [OPTIONS] CONTAINER [CONTAINER...]
重啟
docker restart [OPTIONS] CONTAINER [CONTAINER...]
暫停
docker pause CONTAINER [CONTAINER...]
取消暫停
docker unpause CONTAINER [CONTAINER...]
8.docker logs
獲取容器日志
格式:
docker logs [OPTIONS] CONTAINER
選項(xiàng):
--details:顯示日志提供的額外詳細(xì)信息 --follow,-f:跟蹤日志輸出 --since:顯示從時(shí)間戳開始的日志(例如2013-01-02T13:23:37Z)或相對(duì)日志(例如42m的42minutes) --tail,-n:從日志末尾開始顯示的行數(shù) -t:顯示日志時(shí)間戳 --until:在時(shí)間戳之前顯示日志(例如2013-01-02T13:23:37Z)或相對(duì)顯示(例如42m表示42minutes)
查看5秒之前的日志內(nèi)容的前3行
[root@localhost ~]# docker logs --until 5s -n 3 nginx1
2023/07/12 10:04:58 [notice] 1#1: start worker process 32
2023/07/12 10:04:58 [notice] 1#1: start worker process 33
2023/07/12 10:04:58 [notice] 1#1: start worker process 34
9.docker cp
在容器和本地文件系統(tǒng)之間復(fù)制文件/文件夾
格式:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
選項(xiàng):
-a:歸檔模式(復(fù)制所有uid/gid信息) --quiet,-q:在復(fù)制過程中抑制進(jìn)度輸出。如果沒有終端連接,則自動(dòng)抑制進(jìn)度輸出
10.docker rm
移除一個(gè)或多個(gè)容器
格式:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
選項(xiàng):
--force,-f:強(qiáng)制移除正在運(yùn)行的容器(使用SIGKILL) --link,-l:移除指定的鏈接 --volumes,-v:移除與容器關(guān)聯(lián)的匿名卷
11.docker commit
根據(jù)容器的更改創(chuàng)建一個(gè)新映像
格式:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
選項(xiàng):
--author,-a:作者(如John Hannibal Smith <hannibal@a-team.com>) --change,-c:在創(chuàng)建的鏡像上應(yīng)用Dockerfile指令 --message,-m:提交消息 --pause,-p:在提交期間暫停容器
創(chuàng)建一個(gè)centos7鏡像,進(jìn)行安裝net-tools工具,然后進(jìn)行打包成鏡像
[root@localhost ~]# docker run -itd --name centos centos:7.9.2009
1d1725c19cbe9c6e119f055827a316dd351eb4adeae291a878a39418312daed5
[root@localhost ~]# docker exec -it centos /bin/bash
[root@1d1725c19cbe /]# yum -y install net-tools
進(jìn)行打包
[root@localhost ~]# docker commit -a 'conquerbug@163.com' centos centos7:net-tools
sha256:0db0f584d14de19f7b377fa385ea43e7abcb57223f4a51c690c5b1628e882f70
[root@localhost ~]# docker images
REPOSITORY ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? SIZE
centos7 ? ? ? ? ? net-tools ? 0db0f584d14d ? 6 seconds ago ? 418MB
然后,再基于當(dāng)前鏡像創(chuàng)建容器即可
12.docker導(dǎo)出/導(dǎo)入
docker export
將容器文件系統(tǒng)導(dǎo)出為tar歸檔文件
格式:
docker export [OPTIONS] CONTAINER
選項(xiàng):
--output,-o:寫入文件,而不是標(biāo)準(zhǔn)輸出
將當(dāng)前容器進(jìn)行打包
[root@localhost ~]# docker export -o centos.tar centos
[root@localhost ~]# ls
centos.tar Dockerfile httpd-2.4.57.tar.gz image.tar my.cnf original-ks.cfg
docker import
從壓縮包中導(dǎo)入內(nèi)容以創(chuàng)建文件系統(tǒng)映像
格式:
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
選項(xiàng):
--change,-c:在創(chuàng)建的鏡像上應(yīng)用Dockerfile指令 --message,-m:為導(dǎo)入的圖像設(shè)置提交消息 --platform:如果服務(wù)器支持多平臺(tái),請(qǐng)?jiān)O(shè)置平臺(tái)
將剛剛打包的容器進(jìn)行還原
[root@localhost ~]# docker import centos.tar centos:test
sha256:6bc2adb97476b7b797a5a129c68afcba4ce05ab487812727c7049003f2a1049e
[root@localhost ~]# docker images
REPOSITORY ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? ? ? SIZE
centos ? ? ? ? ? test ? ? ? 6bc2adb97476 ? 4 seconds ago ? ? ? 394MB
13.docker鏡像/容器導(dǎo)出和導(dǎo)入的區(qū)別
export與save
-
export作用于容器,save作用于鏡像,但它們導(dǎo)出的結(jié)果都是為tar文件
-
export一次只能對(duì)一個(gè)容器進(jìn)行導(dǎo)出,save一次可以對(duì)多個(gè)鏡像進(jìn)行導(dǎo)出
-
export只是對(duì)當(dāng)前容器的文件系統(tǒng)快照進(jìn)行導(dǎo)出,其會(huì)丟失原鏡像的所有歷史記錄與元數(shù)據(jù)信息,save則是保存了原鏡像的完整記錄。
import與load
-
import導(dǎo)入的是容器包,load加載的是鏡像包,但最終都會(huì)恢復(fù)為鏡像
-
import恢復(fù)為的鏡像已包含當(dāng)前鏡像一層,load恢復(fù)的鏡像與原鏡像的分層是完全相同的。
-
import恢復(fù)的鏡像就是新構(gòu)建的鏡像,與原鏡像的imageID不同,load恢復(fù)的鏡像與原鏡像是同一個(gè)鏡像,即imageID相同。
-
import可以為導(dǎo)入的鏡像指定從<repository>與<tag>,load加載的鏡像不能指定<repository>與<tag>,與原鏡像的相同
14.docker system
管理碼頭工人
1.docker system df
查看docker磁盤使用情況
格式:
docker system df [OPTIONS]
查看當(dāng)前系統(tǒng)的docker磁盤使用情況
[root@localhost ~]# docker system df
TYPE ? ? ? ? ? TOTAL ? ? ACTIVE ? SIZE ? ? RECLAIMABLE
Images ? ? ? ? ?9 ? ? ? ? 2 ? ? ? ? 1.504GB ? 1.435GB (95%)
Containers ? ? ?2 ? ? ? ? 1 ? ? ? ? 213.9MB ? 213.9MB (100%)
Local Volumes ? 3 ? ? ? ? 1 ? ? ? ? 6.174MB ? 1.501MB (24%)
Build Cache ? ? 19 ? ? ? ?0 ? ? ? ? 465.4MB ? 465.4MB
選項(xiàng):
--format:使用自定義模板格式化輸出:` table `:使用
docker system events [OPTIONS]
列標(biāo)題以表格格式打印輸出(默認(rèn))` table template `:使用給定的Go模板以表格格式打印輸出` json `:使用給定的Go模板打印輸出。有關(guān)使用模板格式化輸出的更多信息,請(qǐng)參閱https://docs.docker.com/go/formatting/ ? --verbose,-v:顯示空間使用的詳細(xì)信息
2.docker system events
從服務(wù)器獲取實(shí)時(shí)事件
格式:
docker system events [OPTIONS]
選項(xiàng):
--filter,-f:根據(jù)提供的條件過濾輸出 --format:使用給定的Go模板格式化輸出 --since:顯示自時(shí)間戳以來創(chuàng)建的所有事件 --until:流事件直到這個(gè)時(shí)間戳
打開兩個(gè)終端
終端1
docker system events
終端2
[root@localhost ~]# docker stop test
test
查看終端1
[root@localhost ~]# docker system events
2023-07-15T17:04:37.334836848+08:00 container kill d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 (image=progrium/consul, name=great_easley, signal=15)
2023-07-15T17:04:41.428854481+08:00 network disconnect 462ad2de000e7aae527224ae21c66e15aac0e68ed45f96b65528e22e272851fa (container=d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290, name=bridge, type=bridge)
2023-07-15T17:04:41.430294298+08:00 volume unmount 0e452a14a460fdc4cfa0b2644761923359a263fe9abeca5fd1952927231ca0a7 (container=d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290, driver=local)
2023-07-15T17:04:41.430357838+08:00 container stop d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 (image=progrium/consul, name=great_easley)
3.docker system info
顯示系統(tǒng)范圍的信息
格式:
docker system info [OPTIONS]
與docker info相同
4.docker system prune
移除未使用的數(shù)據(jù)
格式:
docker system prune [OPTIONS]
選項(xiàng):
--all,-a:刪除所有未使用的圖片,而不僅僅是懸掛的圖片 --filter:提供過濾器值(例如label=<key>=<value>) --force,-f:不提示確認(rèn) --volumes:刪除卷
刪除當(dāng)前docker服務(wù)器所有沒有使用的容器和空名空標(biāo)簽的鏡像和沒有使用的網(wǎng)絡(luò)
[root@localhost ~]# docker system prune
WARNING! This will remove:
?- all stopped containers
?- all networks not used by at least one container
?- all dangling images
?- all dangling build cache
?
翻譯: 警告!這將刪除: -所有停止的容器 —所有未被至少一個(gè)容器使用的網(wǎng)絡(luò) -所有懸掛的圖像 -所有懸掛的構(gòu)建緩存 你確定要繼續(xù)嗎?[y / N] ? Are you sure you want to continue? [y/N] y ? Deleted Containers: 1d1725c19cbe9c6e119f055827a316dd351eb4adeae291a878a39418312daed5 d1a032d521d4e4a02cc7ea497d6d83ac137d4d03e838f4db01e0fe903b2cc290 ? Deleted Networks: mynet1 mac_net1 ? Deleted build cache objects: kutjwzwfdu28eldqlwo07uax7 0p5xfeo29k8ojauchfzf97kp0 a9puvqnewb05luw84rnanr2lh y6mdonbx0pvs2trx7xd97738u kj09ara8y3v3b6f50xtzie6lv itk7ujtbdy4c2nirz68e2ivck 2a7d9sfcsnvl9owzau11l0jrq oe2ukyl2cpguwqjm0kddg5tcx 4fom9yi9x5i125uvb96d29ext tdwcwf0eze1lrvgherr4sxrs5 9hffla6qush85p7jhf89l56ek ? Total reclaimed space: 679.3MB
[root@localhost ~]# docker images
REPOSITORY ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? SIZE
centos ? ? ? ? ? test ? ? ? 6bc2adb97476 ? 25 hours ago ? 394MB
centos7 ? ? ? ? ? net-tools ? 0db0f584d14d ? 26 hours ago ? 418MB
busybox ? ? ? ? ? latest ? ? beae173ccac6 ? 18 months ago ? 1.24MB
nginx ? ? ? ? ? ? latest ? ? 605c77e624dd ? 18 months ago ? 141MB
voltest ? ? ? ? ? latest ? ? 3af6982c965f ? 18 months ago ? 141MB
redis ? ? ? ? ? ? latest ? ? 7614ae9453d1 ? 19 months ago ? 113MB
mysql ? ? ? ? ? ? 5.7 ? ? ? ? c20987f18b13 ? 19 months ago ? 448MB
centos ? ? ? ? ? ?7.9.2009 ? eeb6ee3f44bd ? 22 months ago ? 204MB
progrium/consul ? latest ? ? 09ea64205e55 ? 8 years ago ? ? 69.4MB
[root@localhost ~]# docker ps -a
CONTAINER ID ? IMAGE ? ? COMMAND ? CREATED ? STATUS ? PORTS ? ? NAMES
[root@localhost ~]# docker network ls
NETWORK ID ? ? NAME ? ? DRIVER ? SCOPE
462ad2de000e ? bridge ? bridge ? local
c598e7da9321 ? host ? ? host ? ? local
36391f761fe6 ? none ? ? null ? ? local
15.docker create
創(chuàng)建一個(gè)新容器
它與run類似,但是它唯一的區(qū)別就是,create只創(chuàng)建容器不運(yùn)行,但是docker run是創(chuàng)建容器并運(yùn)行文章來源:http://www.zghlxwxcb.cn/news/detail-626067.html
格式:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...zz
到了這里,關(guān)于【云原生】Docker中容器管理常用所有命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!