摘要:本文承接專(zhuān)題常用管理命令上。按照指示的順序進(jìn)行即可。將同一的所有,合并為一個(gè)新的新建一個(gè),保留舊的那條記錄查看容器的信息命令可以查看容器的端口開(kāi)啟及綁定容器啟動(dòng)后執(zhí)行的。其他命令還有一些如等不是很常用的命令,比較簡(jiǎn)單,請(qǐng)參考官網(wǎng)。
本文承接docker專(zhuān)題(2):docker常用管理命令(上)。
1. 開(kāi)啟/停止/重啟container(start/stop/restart)容器可以通過(guò)run新建一個(gè)來(lái)運(yùn)行,也可以重新start已經(jīng)停止的container,但start不能夠再指定容器啟動(dòng)時(shí)運(yùn)行的指令,因?yàn)閐ocker只能有一個(gè)前臺(tái)進(jìn)程。
容器stop(或Ctrl+D)時(shí),會(huì)在保存當(dāng)前容器的狀態(tài)之后退出,下次start時(shí)保有上次關(guān)閉時(shí)更改。而且每次進(jìn)入attach進(jìn)去的界面是一樣的,與第一次run啟動(dòng)或commit提交的時(shí)刻相同。
CONTAINER_ID=$(docker start) docker stop $CONTAINER_ID docker restart $CONTAINER_ID
關(guān)于這幾個(gè)命令可以通過(guò)一個(gè)完整的實(shí)例使用:docker如何創(chuàng)建一個(gè)運(yùn)行后臺(tái)進(jìn)程的容器并同時(shí)提供shell終端。
2. 連接到正在運(yùn)行中的container(attach)要attach上去的容器必須正在運(yùn)行,可以同時(shí)連接上同一個(gè)container來(lái)共享屏幕(與screen命令的attach類(lèi)似)。
官方文檔中說(shuō)attach后可以通過(guò)CTRL-C來(lái)detach,但實(shí)際上經(jīng)過(guò)我的測(cè)試,如果container當(dāng)前在運(yùn)行bash,CTRL-C自然是當(dāng)前行的輸入,沒(méi)有退出;如果container當(dāng)前正在前臺(tái)運(yùn)行進(jìn)程,如輸出nginx的access.log日志,CTRL-C不僅會(huì)導(dǎo)致退出容器,而且還stop了。這不是我們想要的,detach的意思按理應(yīng)該是脫離容器終端,但容器依然運(yùn)行。好在attach是可以帶上--sig-proxy=false來(lái)確保CTRL-D或CTRL-C不會(huì)關(guān)閉容器。
# docker attach --sig-proxy=false $CONTAINER_ID3. 查看image或container的底層信息(inspect)
inspect的對(duì)象可以是image、運(yùn)行中的container和停止的container。
查看容器的內(nèi)部IP # docker inspect --format="{{.NetworkSettings.IPAddress}}" $CONTAINER_ID 172.17.42.354. 刪除一個(gè)或多個(gè)container、image(rm、rmi)
你可能在使用過(guò)程中會(huì)build或commit許多鏡像,無(wú)用的鏡像需要?jiǎng)h除。但刪除這些鏡像是有一些條件的:
同一個(gè)IMAGE ID可能會(huì)有多個(gè)TAG(可能還在不同的倉(cāng)庫(kù)),首先你要根據(jù)這些 image names 來(lái)刪除標(biāo)簽,當(dāng)刪除最后一個(gè)tag的時(shí)候就會(huì)自動(dòng)刪除鏡像;
承上,如果要?jiǎng)h除的多個(gè)IMAGE NAME在同一個(gè)REPOSITORY,可以通過(guò)docker rmi
還存在由這個(gè)鏡像啟動(dòng)的container時(shí)(即便已經(jīng)停止),也無(wú)法刪除鏡像;
TO-DO
如何查看鏡像與容器的依存關(guān)系
刪除容器
docker rm
刪除所有停止的容器 docker rm $(docker ps -a -q)
刪除鏡像
docker rmi
下面是一個(gè)完整的示例:
# docker images <== ubuntu 13.10 195eb90b5349 4 months ago 184.6 MB ubuntu saucy 195eb90b5349 4 months ago 184.6 MB seanlook/ubuntu rm_test 195eb90b5349 4 months ago 184.6 MB 使用195eb90b5349啟動(dòng)、停止一個(gè)容器后,刪除這個(gè)鏡像 # docker rmi 195eb90b5349 Error response from daemon: Conflict, cannot delete image 195eb90b5349 because it is tagged in multiple repositories, use -f to force 2014/11/04 14:19:00 Error: failed to remove one or more images 刪除seanlook倉(cāng)庫(kù)中的tag <== # docker rmi seanlook/ubuntu:rm_test Untagged: seanlook/ubuntu:rm_test 現(xiàn)在刪除鏡像,還會(huì)由于container的存在不能rmi # docker rmi 195eb90b5349 Error response from daemon: Conflict, cannot delete 195eb90b5349 because the container eef3648a6e77 is using it, use -f to force 2014/11/04 14:24:15 Error: failed to remove one or more images 先刪除由這個(gè)鏡像啟動(dòng)的容器 <== # docker rm eef3648a6e77 刪除鏡像 <== # docker rmi 195eb90b5349 Deleted: 195eb90b534950d334188c3627f860fbdf898e224d8a0a11ec54ff453175e081 Deleted: 209ea56fda6dc2fb013e4d1e40cb678b2af91d1b54a71529f7df0bd867adc961 Deleted: 0f4aac48388f5d65a725ccf8e7caada42f136026c566528a5ee9b02467dac90a Deleted: fae16849ebe23b48f2bedcc08aaabd45408c62b531ffd8d3088592043d5e7364 Deleted: f127542f0b6191e99bb015b672f5cf48fa79d974784ac8090b11aeac184eaaff
注意,上面的刪除過(guò)程我所舉的例子比較特殊——鏡像被tag在多個(gè)倉(cāng)庫(kù),也有啟動(dòng)過(guò)的容器。按照<==指示的順序進(jìn)行即可。
5. docker build 使用此配置生成新的imagebuild命令可以從Dockerfile和上下文來(lái)創(chuàng)建鏡像:
docker build [OPTIONS] PATH | URL | -
上面的PATH或URL中的文件被稱(chēng)作上下文,build image的過(guò)程會(huì)先把這些文件傳送到docker的服務(wù)端來(lái)進(jìn)行的。
如果PATH直接就是一個(gè)多帶帶的Dockerfile文件則可以不需要上下文;如果URL是一個(gè)Git倉(cāng)庫(kù)地址,那么創(chuàng)建image的過(guò)程中會(huì)自動(dòng)git clone一份到本機(jī)的臨時(shí)目錄,它就成為了本次build的上下文。無(wú)論指定的PATH是什么,Dockerfile是至關(guān)重要的,請(qǐng)參考Dockerfile Reference。
請(qǐng)看下面的例子:
# cat Dockerfile FROM seanlook/nginx:bash_vim EXPOSE 80 ENTRYPOINT /usr/sbin/nginx -c /etc/nginx/nginx.conf && /bin/bash # docker build -t seanlook/nginx:bash_vim_Df . Sending build context to Docker daemon 73.45 MB Sending build context to Docker daemon Step 0 : FROM seanlook/nginx:bash_vim ---> aa8516fa0bb7 Step 1 : EXPOSE 80 ---> Using cache ---> fece07e2b515 Step 2 : ENTRYPOINT /usr/sbin/nginx -c /etc/nginx/nginx.conf && /bin/bash ---> Running in e08963fd5afb ---> d9bbd13f5066 Removing intermediate container e08963fd5afb Successfully built d9bbd13f5066
上面的PATH為.,所以在當(dāng)前目錄下的所有文件(不包括.dockerignore中的)將會(huì)被tar打包并傳送到docker daemon(一般在本機(jī)),從輸出我們可以到Sending build context...,最后有個(gè)Removing intermediate container的過(guò)程,可以通過(guò)--rm=false來(lái)保留容器。
TO-DO
docker build github.com/creack/docker-firefox失敗。
tag的作用主要有兩點(diǎn):一是為鏡像起一個(gè)容易理解的名字,二是可以通過(guò)docker tag來(lái)重新指定鏡像的倉(cāng)庫(kù),這樣在push時(shí)自動(dòng)提交到倉(cāng)庫(kù)。
將同一IMAGE_ID的所有tag,合并為一個(gè)新的 # docker tag 195eb90b5349 seanlook/ubuntu:rm_test 新建一個(gè)tag,保留舊的那條記錄 # docker tag Registry/Repos:Tag New_Registry/New_Repos:New_Tag7. 查看容器的信息container(ps)
docker ps命令可以查看容器的CONTAINER ID、NAME、IMAGE NAME、端口開(kāi)啟及綁定、容器啟動(dòng)后執(zhí)行的COMMNAD。經(jīng)常通過(guò)ps來(lái)找到CONTAINER_ID。
docker ps 默認(rèn)顯示當(dāng)前正在運(yùn)行中的container
docker ps -a 查看包括已經(jīng)停止的所有容器
docker ps -l 顯示最新啟動(dòng)的一個(gè)容器(包括已停止的)
容器運(yùn)行時(shí)不一定有/bin/bash終端來(lái)交互執(zhí)行top命令,查看container中正在運(yùn)行的進(jìn)程,況且還不一定有top命令,這是docker top
docker還有一些如login、cp、logs、export、import、load、kill等不是很常用的命令,比較簡(jiǎn)單,請(qǐng)參考官網(wǎng)。
參考Official Command Line Reference
docker中文指南cli-widuu翻譯
Docker —— 從入門(mén)到實(shí)踐
Docker基礎(chǔ)與高級(jí)
原文鏈接地址:http://seanlook.com/2014/11/05/docker-command-best-use-2/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26348.html
摘要:在不存在的情況下,命令行下上去的會(huì)為我們創(chuàng)建為私有庫(kù),然而通過(guò)瀏覽器創(chuàng)建的默認(rèn)為公共庫(kù)。從啟動(dòng)一個(gè)命令首先會(huì)從特定的創(chuàng)之上一層可寫(xiě)的,然后通過(guò)命令來(lái)啟動(dòng)它。下文繼續(xù)專(zhuān)題常用管理命令下參考中文指南翻譯從入門(mén)到實(shí)踐基礎(chǔ)與高級(jí)原文鏈接地址 本文只記錄docker命令在大部分情境下的使用,如果想了解每一個(gè)選項(xiàng)的細(xì)節(jié),請(qǐng)參考官方文檔,這里只作為自己以后的備忘記錄下來(lái)。 根據(jù)自己的理解,總的來(lái)說(shuō)...
摘要:目前只能重新啟動(dòng)一個(gè)容器停止上面的容器可以比較一下與中命令的變化但此時(shí)服務(wù)是停止的,并沒(méi)有在后臺(tái)運(yùn)行,訪問(wèn)無(wú)效。 只看標(biāo)題還不是很明顯,本文實(shí)現(xiàn)docker的這樣一種比較常用的功能:通過(guò)docker run啟動(dòng)一個(gè)容器后,容器中已經(jīng)運(yùn)行了一個(gè)后臺(tái)進(jìn)程(這里以監(jiān)聽(tīng)80端口的nginx為例),同時(shí)進(jìn)入一個(gè)shell終端可供操作,而不受限于只能在前臺(tái)運(yùn)行nginx與運(yùn)行shell終端之間的一...
摘要:簡(jiǎn)介是微服務(wù)治理方案,提供注冊(cè)發(fā)現(xiàn)存儲(chǔ)健康檢查以及多數(shù)據(jù)中心部署的能力。重新設(shè)計(jì)架構(gòu)如下實(shí)施創(chuàng)建個(gè)虛擬機(jī)寫(xiě)一個(gè)腳本批量創(chuàng)建創(chuàng)建個(gè)虛擬機(jī)給這個(gè)腳本授權(quán),并執(zhí)行后可以看到虛擬機(jī)創(chuàng)建完成。集群中的節(jié)點(diǎn)是自動(dòng)加入網(wǎng)絡(luò)的。 consul簡(jiǎn)介 consul是微服務(wù)治理方案,提供注冊(cè)/發(fā)現(xiàn)、k/v存儲(chǔ)、健康檢查以及多數(shù)據(jù)中心部署的能力。 單節(jié)點(diǎn)安裝如下: docker pull consul:0.9...
摘要:在配置下上面啟動(dòng)的配置數(shù)據(jù)庫(kù)名為賬號(hào)密碼也為。突出點(diǎn)是,即非阻塞的。四對(duì)象修改包里面的城市實(shí)體對(duì)象類(lèi)。修改城市對(duì)象,代碼如下城市實(shí)體類(lèi)城市編號(hào)省份編號(hào)城市名稱(chēng)描述注解標(biāo)記對(duì)應(yīng)庫(kù)表的主鍵或者唯一標(biāo)識(shí)符。 摘要: 原創(chuàng)出處 https://www.bysocket.com 「公眾號(hào):泥瓦匠BYSocket 」歡迎關(guān)注和轉(zhuǎn)載,保留摘要,謝謝! 這是泥瓦匠的第104篇原創(chuàng) 文章工程: JDK...
摘要:導(dǎo)讀要從容器化開(kāi)始,而容器又需要從開(kāi)始,本文將介紹如何寫(xiě)出一個(gè)優(yōu)雅的文件。只要記住以上三點(diǎn)就能寫(xiě)出不錯(cuò)的。執(zhí)行完成項(xiàng)目的構(gòu)建。 導(dǎo)讀 Kubernetes要從容器化開(kāi)始,而容器又需要從Dockerfile開(kāi)始,本文將介紹如何寫(xiě)出一個(gè)優(yōu)雅的Dockerfile文件。 文章主要內(nèi)容包括: Docker容器 Dockerfile 使用多階構(gòu)建 感謝公司提供大量機(jī)器資源及時(shí)間讓我們可以實(shí)踐...
閱讀 4184·2022-09-16 13:49
閱讀 1410·2021-11-22 15:12
閱讀 1533·2021-09-09 09:33
閱讀 1049·2019-08-30 13:15
閱讀 1737·2019-08-29 15:30
閱讀 668·2019-08-27 10:52
閱讀 2651·2019-08-26 17:41
閱讀 1907·2019-08-26 12:11