本文主要講解安裝docker后的基礎(chǔ)使用方法以及
命令的介紹,主要是docker鏡像操作及容器操作
命令。 當(dāng)然,docker的相關(guān)命令非常多,可以使用docker help命令查看對(duì)應(yīng)目錄以及相關(guān)提示命令。 |
成都創(chuàng)新互聯(lián)是一家專業(yè)提供開(kāi)陽(yáng)企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為開(kāi)陽(yáng)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
[root@docker ~]# which docker /usr/bin/docker
命令描述:從Docker Hub中搜索并且顯示你所需要的鏡像
命令格式:docker search [options] term
Options: -f, --filter filter Filter output based on conditions provided --format string Pretty-print search using a Go template --limit int Max number of search results (default 25) --no-trunc Don't truncate output
-s: -s 100 #表示收藏?cái)?shù)大于100的鏡像
實(shí)例操作演示:
[root@docker ~]# docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 12968 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1772 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 764 [OK] ...//省略部分內(nèi)容 [root@docker ~]# docker search -s 100 nginx Flag --stars has been deprecated, use --filter=stars=3 instead NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 12968 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1772 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 764 [OK]linuxserver/nginx An Nginx container, brought to you by LinuxS… 104
簡(jiǎn)要說(shuō)明:
該命令作為檢索命令,下面我們需要獲取你檢索后選擇的每個(gè)鏡像
命令描述:從鏡像倉(cāng)庫(kù)中拉取(形象的說(shuō)法嘛)或者更新指定鏡像
命令格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Options:
-a, --all-tags Download all tagged images in the repository --disable-content-trust Skip image verification (default true) -q, --quiet Suppress verbose output
OPTIONS說(shuō)明:
實(shí)例演示:拉取nginx鏡像為例
[root@docker ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx c499e6d256d6: Pull complete 74cda408e262: Pull complete ffadbd415ab7: Pull complete Digest: sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:lates
這樣我們就拉取了一個(gè)nginx鏡像,那么我們?cè)趺床榭茨兀?/p>
命令描述:列出本地鏡像
命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS說(shuō)明:
實(shí)例演示:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB #等價(jià)于下面的命令 [root@docker ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB
簡(jiǎn)要說(shuō)明:
PS:補(bǔ)充使用docker inspect IMAGE ID可以查看鏡像的詳細(xì)信息。
下面看看這個(gè)TAG的作用
命令描述:標(biāo)記本地鏡像,將其歸入某一倉(cāng)庫(kù)
命令格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
實(shí)例演示:
[root@docker ~]# docker tag nginx:latest nginx:lokott [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB nginx lokott ed21b7a8aee9 6 days ago 127MB
假設(shè)我們創(chuàng)建的時(shí)候發(fā)現(xiàn)有錯(cuò)誤,或者在不需要的時(shí)候怎么刪除鏡像呢?繼續(xù)來(lái)看哈!
命令描述:刪除本地一個(gè)或多個(gè)鏡像
命令格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
Options:
-f, --force Force removal of the image --no-prune Do not delete untagged parents
實(shí)例演示:
[root@docker ~]# docker rmi nginx:lokott Untagged: nginx:lokott [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB [root@docker ~]# docker rmi nginx:latest Untagged: nginx:latest Untagged: nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596 Deleted: sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291 Deleted: sha256:8a305f371a6c3c445a1dfc500c1364743868a269ab8cdaf95902692e82168352 Deleted: sha256:d079ef06ec1f10a8050887365f9a940b39547ba6bcc46b16a463e740984f3223 Deleted: sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45
刪除打標(biāo)簽的鏡像其實(shí)本質(zhì)就是一個(gè)脫去標(biāo)簽的操作,與刪除原鏡像文件是不一樣的。
盡量不要使用刪除ID號(hào)的方式刪除鏡像,并且注意盡量刪除依賴該鏡像的所有容器后再刪除這個(gè)鏡像。
那么我們需要考慮我們拉取了鏡像之后怎么存出鏡像呢?這就需要使用下面的命令來(lái)實(shí)現(xiàn)了。
所謂存出,我們?cè)O(shè)想這樣的場(chǎng)景應(yīng)用:當(dāng)需要將一臺(tái)機(jī)器上的鏡像遷移到另一臺(tái)機(jī)器上的時(shí)候,需要將鏡像保存成本地文件,這個(gè)過(guò)程就叫做存出鏡像。
你可以簡(jiǎn)單理解為將鏡像打成壓縮包方便使用
命令描述:將指定鏡像保存成 tar 歸檔文件
命令格式:docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 說(shuō)明:
實(shí)例演示:
[root@docker ~]# docker save -o /opt/nginx nginx:latest [root@docker ~]# ll /opt/ 總用量 127560 drwx--x--x. 4 root root 28 4月 6 09:45 containerd -rw-------. 1 root root 130618880 4月 6 14:04 nginx drwxr-xr-x. 2 root root 6 10月 31 2018 rh
那么有存出,就必定有對(duì)應(yīng)的載入操作,我們將存出的文件從本地復(fù)制一份到其他機(jī)器上是,我們需要使用這個(gè)鏡像,可以通過(guò)下面的命令實(shí)現(xiàn)載入鏡像
命令描述:載入鏡像文件
命令格式:docker load [OPTIONS]
Options:
-i, --input string Read from tar archive file, instead of STDIN -q, --quiet Suppress the load output
實(shí)例演示:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE #一: [root@docker ~]# docker load < /opt/nginx c3a984abe8a8: Loading layer 72.48MB/72.48MB 99134ec7f247: Loading layer 58.11MB/58.11MB d37eecb5b769: Loading layer 3.584kB/3.584kB Loaded image: nginx:latest [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB #二:從tar存檔文件中讀取,而不是從STDIN中讀取 [root@docker ~]# docker load --input /opt/nginx #或者使用-i代替--input也是一樣的 c3a984abe8a8: Loading layer 72.48MB/72.48MB 99134ec7f247: Loading layer 58.11MB/58.11MB d37eecb5b769: Loading layer 3.584kB/3.584kB Loaded image: nginx:latest
命令描述:將自己本地的鏡像制作好后上傳到倉(cāng)庫(kù)中
命令格式:docker login
結(jié)合docker push NAME[:TAG]使用
關(guān)于Docker容器的操作筆者換一種風(fēng)格來(lái)介紹,但是還是會(huì)通過(guò)實(shí)例來(lái)方便大家理解。
首先,容器簡(jiǎn)單而言,是基于鏡像的一個(gè)運(yùn)行實(shí)例,是獨(dú)立運(yùn)行的一個(gè)或一組應(yīng)用以及其所必需的運(yùn)行環(huán)境,包括文件系統(tǒng)、系統(tǒng)類庫(kù)、 shell環(huán)境等。鏡像是只讀模板,而容器會(huì)給這個(gè)只讀模板一個(gè)額外的可寫(xiě)層。
接下來(lái)就容器來(lái)講述具體的操作命令。
容器創(chuàng)建就是將鏡像加載到容器的過(guò)程,因?yàn)槭莇ocker是輕量級(jí)的應(yīng)用工具,用戶可以隨時(shí)進(jìn)行創(chuàng)建或者刪除。新建的容器默認(rèn)處于停止?fàn)顟B(tài),不允許任何程序,需要在其中發(fā)起一個(gè)進(jìn)程來(lái)啟動(dòng)容器,這個(gè)進(jìn)程就是這個(gè)容器的唯一進(jìn)程,因此在該進(jìn)程結(jié)束的時(shí)候,容器也會(huì)完全停止。停止的容器可以重新啟動(dòng)并且保留原來(lái)的修改。
容器的創(chuàng)建
容器創(chuàng)建命令:docker create
命令格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
常用的options:
實(shí)例演示:
[root@docker ~]# docker create -it nginx:latest /bin/bash a1a2e8468189b146b0215971cf76947987d8fc3f42c58e77371e8d48afb030d1 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1a2e8468189 nginx:latest "/bin/bash" 7 seconds ago Created gallant_feynman
相關(guān)說(shuō)明:
容器的啟動(dòng)
命令:docker start
命令格式:docker start [OPTIONS] CONTAINER [CONTAINER...]
實(shí)例演示:
[root@docker ~]# docker start a1a2e8468189 a1a2e8468189 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1a2e8468189 nginx:latest "/bin/bash" 10 minutes ago Up 2 seconds 80/tcp gallant_feynman
啟動(dòng)后,發(fā)現(xiàn)端口信息出來(lái)了,并且顯示是up狀態(tài),表示容器已經(jīng)是啟動(dòng)狀態(tài)了。
下面看另一種啟動(dòng)容器的方式:
[root@docker ~]# docker run CentOS /usr/bin/bash -c ls / Unable to find image 'centos:latest' locally latest: Pulling from library/centos 8a29a15cefae: Pull complete Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 Status: Downloaded newer image for centos:latest bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" About a minute ago Exited (0) About a minute ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 28 minutes ago Up 17 minutes 80/tcp gallant_feynman
-c參數(shù)表示的是需要執(zhí)行的命令,這種方式適用于一次執(zhí)行,Exited (0) 表示正常正確退出,及終止運(yùn)行。
docker run的命令執(zhí)行流程為:先從本地查找鏡像(本地沒(méi)有image不表示容器不依賴image),如果沒(méi)有會(huì)從公共倉(cāng)庫(kù)中下載;再通過(guò)鏡像創(chuàng)建并且啟動(dòng)一個(gè)容器;分配一個(gè)文件系統(tǒng)給容器,在只讀的鏡像層外面掛載一層可讀寫(xiě)層;從宿主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中;分配一個(gè)地址池中的IP地址給容器;執(zhí)行用戶指定的應(yīng)用程序;執(zhí)行之后容器被終止(后臺(tái)運(yùn)行除外)。
后臺(tái)運(yùn)行:run 后面加參數(shù)-d即可。
想要在運(yùn)行中的容器停下來(lái),使用docker stop 命令
命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER...]
實(shí)例演示:
[root@docker ~]# docker stop a1a2e8468189 a1a2e8468189 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 9 minutes ago Exited (0) 9 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 36 minutes ago Exited (0) 3 seconds ago gallant_feynman
想要進(jìn)入容器進(jìn)行相應(yīng)操作時(shí)可以使用docker exec命令進(jìn)入運(yùn)行著的容器。
命令格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
[root@docker ~]# docker ps -a #檢查容器是否是運(yùn)行狀態(tài)(up) CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 12 minutes ago Exited (0) 12 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 38 minutes ago Up 4 seconds 80/tcp gallant_feynman [root@docker ~]# docker exec -it a1a2e8468189 /bin/bash #進(jìn)入偽終端 root@a1a2e8468189:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@a1a2e8468189:/# exit #使用exit退出偽終端 exit [root@docker ~]#
類似鏡像,用戶也可以將容器從一臺(tái)機(jī)器遷移到另一臺(tái)機(jī)器。在遷移過(guò)程中,首先需要將已經(jīng)創(chuàng)建好的容器導(dǎo)出為文件,使用docker export實(shí)現(xiàn),無(wú)論這個(gè)容器是處于運(yùn)行狀態(tài)還是停止?fàn)顟B(tài)均可以導(dǎo)出。導(dǎo)出之后可將導(dǎo)出文件傳輸?shù)狡渌麢C(jī)器,通過(guò)對(duì)應(yīng)的導(dǎo)入命令實(shí)現(xiàn)遷移過(guò)程。
容器導(dǎo)出命令:docker export
命令格式:docker export [OPTIONS] CONTAINER
實(shí)例演示:一個(gè)運(yùn)行狀態(tài)一個(gè)停止?fàn)顟B(tài),都演示
[root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 21 minutes ago Exited (0) 21 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 48 minutes ago Up 9 minutes 80/tcp gallant_feynman
運(yùn)行中的容器導(dǎo)出:
[root@docker ~]# docker export a1a2e8468189 > nginx_contain [root@docker ~]# ls anaconda-ks.cfg initial-setup-ks.cfg nginx nginx_contain 公共 模板 視頻 圖片 文檔 下載 音樂(lè) 桌面 [root@docker ~]# ll 總用量 253448 -rw-------. 1 root root 1954 4月 6 08:49 anaconda-ks.cfg -rw-r--r--. 1 root root 2002 4月 6 08:50 initial-setup-ks.cfg -rw-------. 1 root root 130618880 4月 6 14:04 nginx #鏡像存出的文件 -rw-r--r--. 1 root root 128899072 4月 6 16:04 nginx_contain #容器導(dǎo)出文件 二者權(quán)限不同
終止的容器導(dǎo)出:
[root@docker ~]# docker export 4835176a7d8e > centos_contain [root@docker ~]# ls anaconda-ks.cfg initial-setup-ks.cfg nginx_contain 模板 圖片 下載 桌面 centos_contain nginx 公共 視頻 文檔 音樂(lè)
導(dǎo)出的文件從本地拷貝到遠(yuǎn)程服務(wù)器,之后使用docker import命令導(dǎo)入,成為鏡像
容器導(dǎo)入命令:docker import
命令格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
實(shí)例演示:
[root@docker ~]# docker import centos_contain centos_new:54 sha256:f32b5354c81de72a71af50468d09803aa9e62e08741e3cd3e84c10c9a74e2204 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_new 54 f32b5354c81d 10 seconds ago 0B nginx latest ed21b7a8aee9 6 days ago 127MB centos latest 470671670cac 2 months ago 237MB
或者使用cat 文件名 | docker import - 鏡像名稱:tag 執(zhí)行命令也可以的
容器的刪除:docker rm
命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER...]
實(shí)例演示:
[root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4835176a7d8e centos "/usr/bin/bash -c ls…" 31 minutes ago Exited (0) 31 minutes ago affectionate_keldysh a1a2e8468189 nginx:latest "/bin/bash" 58 minutes ago Up 19 minutes 80/tcp gallant_feynm
刪除已終止的容器:
[root@docker ~]# docker rm 4835176a7d8e 4835176a7d8e [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1a2e8468189 nginx:latest "/bin/bash" 59 minutes ago Up 20 minutes 80/tcp gallant_feynman
刪除成功了!
刪除還在運(yùn)行中的容器:
[root@docker ~]# docker rm a1a2e8468189 Error response from daemon: You cannot remove a running container a1a2e8468189b146b0215971cf76947987d8fc3f42c58e77371e8d48afb030d1. Stop the container before attempting removal or force remove
發(fā)現(xiàn)Error了,不能這樣刪除運(yùn)行狀態(tài)中的容器,提示你的操作是嘗試刪除容器前停止容器的運(yùn)行或者強(qiáng)制刪除
推薦前者,后者只需要如下操作,但盡量不要隨意使用哈!
[root@docker ~]# docker rm a1a2e8468189 -f a1a2e8468189 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
友情提示:docker默認(rèn)的存儲(chǔ)目錄在/var/lib/docker目錄下,docker的鏡像、容器、日志等內(nèi)容全部都存儲(chǔ)在此,當(dāng)然也可以單獨(dú)使用大容量的分區(qū)來(lái)存儲(chǔ)這些內(nèi)容,并且一般選擇建立在LVM邏輯卷,從而方便后續(xù)擴(kuò)容操作。
本文講述的是docker基礎(chǔ)命令(鏡像和容器)的操作,通過(guò)實(shí)實(shí)在在的實(shí)際案例方便理解。對(duì)于docker的介紹與安裝可以查閱筆者的前一篇文章。
感謝閱讀!
原文來(lái)自: https://www.linuxprobe.com/docker-help.html
名稱欄目:Docker鏡像及容器操作命令介紹
瀏覽地址:http://muchs.cn/article12/pjjsdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站排名、定制網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站改版、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容