容器是docker的另乙個核心概念。
一般來說,映象的乙個執行例項就是容器,容器提供了乙個可寫的檔案層。
docker的容器非常輕量級,建立和刪除都很容易。
新建容器使用docker create命令:
[plain]view plain
copy
docker create -it ubuntu:latest
此時建立好的容器處於停止狀態,使用docker pa -a可以檢視容器列表。
停止的容器可以使用docker start命令啟動。
啟動容器有兩種方式:
1、基於映象新建容器並啟動
2、啟動終止狀態的容器
主要涉及的命令為docker run,等價於先執行docker create,然後執行docker start命令。
比如:[plain]view plain
copy
docker run ubuntu /bin/bash 'hello word'
會啟動容器並輸出hello word然後自動終止。
利用docker run建立並啟動容器時,docker在後台執行的標準操作包括:
利用映象建立並啟動乙個容器
分配乙個檔案系統,並在唯讀的映象層外面掛載一層可讀寫層
從宿主主機配置的網橋介面中橋接乙個虛擬介面道容器中去。
從位址池中分配乙個ip給容器
執行使用者指定的應用程式
執行完畢後容器被終止
下面啟動乙個bash終端與使用者互動:
[plain]view plain
copy
docker run -t -i ubuntu /bin/bash
-t:讓docker分配乙個偽終端並繫結到容器的標準輸入上。
-i:讓容器的標準輸入保持開啟。
互動模式下使用者可以通過所建立的中斷來輸入命令,這和一般linux的中斷使用起來是一樣的。
輸入exit或者按ctrl+d可以退出容器。
對於所建立的bash容器,當使用exit命令退出後,docker容器也會自動終止,因為對於docker來說,沒有執行中的應用後,容器也沒有必要繼續執行了。
可以通過-d引數讓docker容器在後台以守護態(daemonized)形式執行。
比如:[plain]view plain
copy
docker run -d ubuntu /bin/bash -c "while true;do each hello word; sleep 1 done"
使用docker ps命令檢視容器資訊。
使用docker logs獲取容器的輸出資訊。
終止乙個執行中的命令是docker stop,格式:
[plain]view plain
copy
docker stop [-t|--time[=10]]
這時會首先向容器傳送sigterm訊號,等待一段時間後(預設為10s),再次傳送signkill訊號終止容器。
同樣的,像剛剛前面說的一樣,當docker容器中指定的應用終結時,容器頁自動終止。
可以通過docker ps命令檢視:
[plain]view plain
copy
docker ps -a -q
這裡引數表示檢視所有退出的容器。
容器(被)終止後,可以通過docker start重新啟動。
而docker restart命令,頁如我們所料,會首先終止乙個執行態的容器,然後再重新啟動它。
啟動容器時若加上引數-d會進入後台,無法直接看到容器中的內容。
如果想進入容器,有多種方法:docker attach命令、docker exec命令以及nsenter工具等。
這是docker自帶的命令。
如果我們有如下執行的容器:
[plain]view plain
copy
docker run -idt ubuntu
可以這樣進入:
[plain]view plain
copy
docker attach 容器name
但是,當多個視窗(終端)同時attach到乙個容器時,所有視窗都會同步顯示,當某個視窗因為命令等阻塞後,其他視窗也會被阻塞而不能執行操作。
exec是docker中1.3版本開始提供的工具,可以直接在容器中執行命令。
還是剛剛那個執行的容器的例子,如果想要進入並啟動乙個bash:
[plain]view plain
copy
docker exec -ti 容器id /bin/bash
nsenter工具包含在util-linux 2.23版本及以後,如果系統中的對應包版本較低,可以如下安裝新版:
。。。。。。
刪除容器使用docker rm命令,格式為:
[plain]view plain
copy
docker rm [options] container [container...]
支援的選項:
例如,刪除終止狀態的容器:
[plain]view plain
copy
docker rm 容器id
刪除執行中的容器:
[plain]view plain
copy
docker rm -f 容器id
跟映象一樣,容器也可以匯出為乙個檔案和從檔案中匯入容器。
匯出容器是將乙個以及從映象建立為容器的例項匯出到乙個檔案,而不管此時這個容器是否處於執行狀態。
命令為dicker export,格式:
[plain]view plain
copy
docker export container
乙個匯出的示例:
[plain]view plain
copy
docker export 容器id >匯出後的檔名.tar
然後可以將檔案傳送到其他地方以實現容器的遷移。
對於剛剛匯出的容器,對應使用docker import命令匯入,然後成為映象:
[plain]view plain
copy
cat 檔名.tar | docker import - 映象名字:tag
比如:[plain]view plain
copy
cat test.tar | docker import - test/ubuntu:v0.0.1
映象的匯入使用的是docker load,下面是兩者的區別:
容器是直接提**用服務的元件,操作都非常輕量級,是docker實現快速的啟停和高效服務效能的基礎。
docker 基礎教程
docker優點 docker容器,一次構建,到處執行。構建之後,在任何支援docker的地方都能把它run起來。虛擬機器 作業系統完全隔離。虛擬機器之下還有虛擬機器管理程式。docker 沒有虛擬機器作業系統這層。主要是基於linux核心對容器的實現。1 yum install docker io...
Docker基礎教程
什麼是docker docker 是世界領先的軟體容器平台。開發人員利用 docker 可以消除協作編碼時 在我的機器上可正常工作 的問題。運維人員利用 docker 可以在隔離容器中並行執行和管理應用,獲得更好的計算密度。企業利用 docker 可以構建敏捷的軟體交付管道,以更快的速度 更高的安全...
Docker基礎教程 網路基礎配置
啟動容器時,如果不知道對應引數,在容器外部是無法通過網路訪問容器內部的。可以通過 p或 p引數指定埠對映。使用 p時,docker會隨機對映乙個49000 49900的埠到容器內部開放的埠。p會對映到指定的埠,支援的格式 主機埠 容器埠 主機埠 容器埠 格式將本地埠對映到容器埠的命令如下 plain...