Docker 映象及容器操作命令介紹
本文主要講解安裝docker後的基礎使用方法以及
的介紹,主要是docker映象操作及容器操作
。
當然,docker的相關命令非常多,可以使用docker help命令檢視對應目錄以及相關提示命令。 |
[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 #表示收藏數大於100的映象
例項操作演示:
[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] ...//省略部分內容 [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
簡要說明:
- NAME:映象名稱
- DESCRIPTION:該映象的描述資訊
- STARS:星級,越高則說明使用者,喜歡的人越多
- OFFICIAL:是否為官方釋出
- AUTOMATED:自動建立
該命令作為檢索命令,下面我們需要獲取你檢索後選擇的每個映象
命令描述:從映象倉庫中拉取(形象的說法嘛)或者更新指定映象
命令格式: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說明:
- -a :拉取所有 tagged 映象
- --disable-content-trust :忽略映象的校驗,預設開啟
例項演示:拉取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
這樣我們就拉取了一個nginx映象,那麼我們怎麼檢視呢?
命令描述:列出本地映象
命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]
OPTIONS說明:
- -a :列出本地所有的映象(含中間映像層,預設情況下,過濾掉中間映像層);
- --digests :顯示映象的摘要資訊;
- -f :顯示滿足條件的映象;
- --format :指定返回值的模板檔案;
- --no-trunc :顯示完整的映象資訊;
- -q :只顯示映象ID。
例項演示:
[root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB #等價於下面的命令 [root@docker ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest ed21b7a8aee9 6 days ago 127MB
簡要說明:
- REPOSITORY:倉庫名稱
- TAG:標籤
- IMAGE ID:映象id
- CREATE:建立狀態(按照時間)
- SIZE:檔案大小
PS:補充使用docker inspect IMAGE ID可以檢視映象的詳細資訊。
下面看看這個TAG的作用
命令描述:標記本地映象,將其歸入某一倉庫
命令格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
例項演示:
[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
假設我們建立的時候發現有錯誤,或者在不需要的時候怎麼刪除映象呢?繼續來看哈!
命令描述:刪除本地一個或多個映象
命令格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
Options:
-f, --force Force removal of the image --no-prune Do not delete untagged parents
例項演示:
[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
刪除打標籤的映象其實本質就是一個脫去標籤的操作,與刪除原映象檔案是不一樣的。
儘量不要使用刪除ID號的方式刪除映象,並且注意儘量刪除依賴該映象的所有容器後再刪除這個映象。
那麼我們需要考慮我們拉取了映象之後怎麼存出映象呢?這就需要使用下面的命令來實現了。
所謂存出,我們設想這樣的場景應用:當需要將一臺機器上的映象遷移到另一臺機器上的時候,需要將映象儲存成本地檔案,這個過程就叫做存出映象。
你可以簡單理解為將映象打成壓縮包方便使用
命令描述:將指定映象儲存成 tar 歸檔檔案
命令格式:docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 說明:
- -o :輸出到的檔案。
例項演示:
[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
那麼有存出,就必定有對應的載入操作,我們將存出的檔案從本地複製一份到其他機器上是,我們需要使用這個映象,可以透過下面的命令實現載入映象
命令描述:載入映象檔案
命令格式:docker load [OPTIONS]
Options:
-i, --input string Read from tar archive file, instead of STDIN -q, --quiet Suppress the load output
例項演示:
[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
命令描述:將自己本地的映象製作好後上傳到倉庫中
命令格式:docker login
結合docker push NAME[:TAG]使用
關於Docker容器的操作筆者換一種風格來介紹,但是還是會透過例項來方便大家理解。
首先,容器簡單而言,是基於映象的一個執行例項,是獨立執行的一個或一組應用以及其所必需的執行環境,包括檔案系統、系統類庫、 環境等。映象是隻讀模板,而容器會給這個只讀模板一個額外的可寫層。
接下來就容器來講述具體的操作命令。
容器建立就是將映象載入到容器的過程,因為是docker是輕量級的應用工具,使用者可以隨時進行建立或者刪除。新建的容器預設處於停止狀態,不允許任何程式,需要在其中發起一個程式來啟動容器,這個程式就是這個容器的唯一程式,因此在該程式結束的時候,容器也會完全停止。停止的容器可以重新啟動並且保留原來的修改。
容器的建立
容器建立命令:docker create
命令格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
常用的options:
- -i:讓容器的輸入保持開啟
- -t:讓docker分配一個偽終端
例項演示:
[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
相關說明:
- CONTAINER ID:容器ID號
- IMAGE:使用的映象
- COMMAND :
- CREATED:顯示操作時間
- STATUS:顯示狀態,created表示已建立
- PORTS:埠 資訊和使用的連線型別(tcp/udp)
- NAMES:自動分配容器的名稱
容器的啟動
命令:docker start
命令格式:docker start [OPTIONS] CONTAINER [CONTAINER...]
例項演示:
[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
啟動後,發現埠資訊出來了,並且顯示是up狀態,表示容器已經是啟動狀態了。
下面看另一種啟動容器的方式:
[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參數列示的是需要執行的命令,這種方式適用於一次執行,Exited (0) 表示正常正確退出,及終止執行。
docker run的命令執行流程為:先從本地查詢映象(本地沒有image不表示容器不依賴image),如果沒有會從公共倉庫中下載;再透過映象建立並且啟動一個容器;分配一個檔案系統給容器,在只讀的映象層外面掛載一層可讀寫層;從宿主機配置的網橋介面中橋接一個虛擬介面到容器中;分配一個地址池中的IP地址給容器;執行使用者指定的應用程式;執行之後容器被終止(後臺執行除外)。
後臺執行:run 後面加引數-d即可。
想要在執行中的容器停下來,使用docker stop 命令
命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER...]
例項演示:
[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
想要進入容器進行相應操作時可以使用docker exec命令進入執行著的容器。
命令格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
[root@docker ~]# docker ps -a #檢查容器是否是執行狀態(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 #進入偽終端 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 ~]#
類似映象,使用者也可以將容器從一臺機器遷移到另一臺機器。在遷移過程中,首先需要將已經建立好的容器匯出為檔案,使用docker export實現,無論這個容器是處於執行狀態還是停止狀態均可以匯出。匯出之後可將匯出檔案傳輸到其他機器,透過對應的匯入命令實現遷移過程。
容器匯出命令:docker export
命令格式:docker export [OPTIONS] CONTAINER
例項演示:一個執行狀態一個停止狀態,都演示
[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
執行中的容器匯出:
[root@docker ~]# docker export a1a2e8468189 > nginx_contain [root@docker ~]# ls anaconda-ks.cfg initial-setup-ks.cfg nginx nginx_contain 公共 模板 影片 圖片 文件 下載 音樂 桌面 [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 #容器匯出檔案 二者許可權不同
終止的容器匯出:
[root@docker ~]# docker export 4835176a7d8e > centos_contain [root@docker ~]# ls anaconda-ks.cfg initial-setup-ks.cfg nginx_contain 模板 圖片 下載 桌面 centos_contain nginx 公共 影片 文件 音樂
匯出的檔案從本地複製到遠端伺服器,之後使用docker import命令匯入,成為映象
容器匯入命令:docker import
命令格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
例項演示:
[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 執行命令也可以的
容器的刪除:docker rm
命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER...]
例項演示:
[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
刪除成功了!
刪除還在執行中的容器:
[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
發現Error了,不能這樣刪除執行狀態中的容器,提示你的操作是嘗試刪除容器前停止容器的執行或者強制刪除
推薦前者,後者只需要如下操作,但儘量不要隨意使用哈!
[root@docker ~]# docker rm a1a2e8468189 -f a1a2e8468189 [root@docker ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
友情提示:docker預設的儲存目錄在/var/lib/docker目錄下,docker的映象、容器、日誌等內容全部都儲存在此,當然也可以單獨使用大容量的分割槽來儲存這些內容,並且一般選擇建立在LVM邏輯卷,從而方便後續擴容操作。
本文講述的是docker基礎命令(映象和容器)的操作,透過實實在在的實際案例方便理解。對於docker的介紹與安裝可以查閱筆者的前一篇文章。
感謝閱讀!
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2690472/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker 最常用的映象命令和容器命令Docker
- docker 映象和容器的基本命令Docker
- docker刪除所有容器和映象命令Docker
- distroless 映象介紹及 基於cbl-mariner的.NET distroless 映象的容器
- Docker容器實現原理及容器隔離性踩坑介紹Docker
- Docker容器技術與Docker介紹Docker
- 容器技術和Docker介紹Docker
- Docker介紹下載安裝、製作映象及容器、做目錄對映、做埠對映Docker
- Docker基本介紹及使用Docker
- (2)Docker常用命令介紹Docker
- Docker的原理及特性介紹Docker
- Docker配置阿里雲映象加速器以及映象的常用操作命令Docker阿里
- Docker 匯出容器 / 映象Docker
- netcat 命令介紹及使用示例
- Docker 容器操作Docker
- 操作Docker容器Docker
- 2、docker映象操作Docker
- Docker批次容器編排的實現介紹Docker
- Docker介紹及安裝詳解Docker
- 1.03 docker的映象和容器Docker
- 容器技術之Docker映象Docker
- MyBatis框架介紹及實戰操作MyBatis框架
- Docker重要容器命令Docker
- 3、docker容器操作Docker
- Docker映象的基本操作Docker
- Docker(3):Dockerfile介紹及簡單示例Docker
- Docker--容器和映象的使用Docker
- docker 批量刪除容器和映象Docker
- 細述docker容器建立MariaDB映象Docker
- docker容器與映象的區別Docker
- 『現學現忘』Docker基礎 — 28、Docker容器資料卷介紹Docker
- Docker介紹Docker
- Docker 資料卷,資料卷容器詳細介紹Docker
- Docker基礎修煉3--Docker容器及常用命令Docker
- Python 複數屬性及操作介紹Python
- Docker 容器基本操作[Docker 系列-2]Docker
- docker容器操作指令碼Docker指令碼
- 通過容器提交映象(docker commit)以及推送映象(docker push)筆記DockerMIT筆記