Docker鏡像操做
Docker運行容器前須要本地存在對應的鏡像,若是本地不存在該鏡像,Docker會從鏡像倉庫下載該鏡像。redis
獲取鏡像
從Docker鏡像倉庫獲取鏡像的命令是docker pull。其命令格式爲:docker
docker pull [選項][Docker Registry地址[:端口號]/]倉庫名[:標籤]
具體的選項能夠經過docker pull --help命令看到,這裏咱們說一下鏡像名稱的格式。Docker鏡像倉庫地址:地址的格式通常是<域名/IP>[:端口號]。默認地址是Docker Hub。倉庫名:如以前所說,這裏的倉庫名是兩段式名稱,即<用戶名>/<軟件名>。對於Docker Hub,若是不給出用戶名,則默認爲library,也就是官方鏡像。shell
docker pull ubuntu:16.04
上面的命令中沒有給出Docker鏡像倉庫地址,所以將會從Docker Hub獲取鏡像。而鏡像名稱是ubuntu:16.04,所以將會獲取官方鏡像library/ubuntu倉庫中標籤爲16.04的鏡像。ubuntu
運行鏡像
有了鏡像後,咱們就可以以這個鏡像爲基礎啓動並運行一個容器。以上面的ubuntu:16.04爲例,若是咱們打算啓動裏面的bash而且進行交互式操做的話,能夠執行下面的命令。bash
docker run -it --rm ubuntu:16.04 bash
-it:這是兩個參數,一個是-i:交互式操做,一個是-t終端。spa
--rm:這個參數是說容器退出後隨之將其刪除操作系統
ubuntu:16.04:這是指用ubuntu:16.04鏡像爲基礎來啓動容器。rest
bash:放在鏡像名後的是命令,這裏咱們但願有個交互式shell,所以用的是bash。日誌
最後咱們經過exit退出了這個容器。code
列出鏡像
要想列出已經下載下來的鏡像,能夠使用docker image ls命令。列表包含了倉庫名、標籤、鏡像ID、建立時間以及所佔用的空間。
docker image ls
查看鏡像、容器、數據卷所佔用的空間。
docker system df
倉庫名、標籤均爲<none>的鏡像稱爲虛懸鏡像(dangling image),顯示這類鏡像
docker image ls -f dangling=true
通常來講,虛懸鏡像已經失去了存在的價值,是能夠隨意刪除的,能夠用下面的命令刪除
docker image prune
刪除本地鏡像
若是要刪除本地的鏡像,能夠使用docker image rm命令,其格式爲:
docker image rm [選項] <鏡像1>[<鏡像2>...]
其中,<鏡像>能夠是鏡像短ID、鏡像長ID、鏡像名或者鏡像摘要。
使用docker image ls -q來配置docker image rm,這樣能夠批量刪除但願刪除的鏡像。
docker image rm $(docker image ls -q ubuntu) #刪除全部倉庫名爲redis的鏡像
或者刪除全部在ubuntu:16.04以前的鏡像:
docker image rm $(docker image ls -q -f before=ubuntu:16.04)
Docker容器操做
容器是獨立運行的一個或一組應該,以及它們運行態環境。對應的,虛擬機能夠理解爲模擬運行的一整套操做系統(提供了運行態環境和其餘系統環境)和跑在上面的應用。
啓動容器
啓動容器有兩種方式,一種是基於鏡像新建一個容器並啓動,另一個是將在終止狀態(stopped)的容器從新啓動。
由於Docker的容器實是輕量級的,用戶能夠隨時刪除和新建立容器。
新建並啓動
docker run
輸出一個「Hello World」,以後終止容器。
docker run ubuntu:16.04 /bin/echo "Hello world"
啓動已終止容器
docker container start 或者 docker start
啓動一個bash終端,容許用戶進行交互。
docker run -t -i ubuntu:16.04 /bin/bash
-t 讓Docker分配一個僞終端並綁定到容器的標準輸入上,-i則讓容器的標準輸入保持打開。當利用docker run來建立容器時,Docker在後臺運行的標準操做包括:
- 檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
- 利用鏡像建立並啓動一個容器
- 分配一個文件系統,並在只讀的鏡像層外面掛載一層可讀寫層
- 從宿主主機配置的網橋接口中橋接一個虛擬接口到容器中去
- 從地址池配置一個ip地址給容器
- 執行用戶指定的應用程序
- 執行完畢後容器被終止
後臺運行
不少時間,須要讓Docker在後臺運行而不是直接把執行命令的結果輸出在當前宿主機下。此時,能夠經過添加-d參數來實現。
若是不使用-d參數運行容器,好比docker run hello-world會把日誌打印在控制檯。 若是使用-d參數運行容器,好比docker run -d hello-world不會輸出日誌,只會打印容器id(輸出結果能夠用docker logs查看);
注:容器是否會長久運行,是和docker run指定的命令有關,和-d參數無關。
中止運行的容器
能夠使用docker container stop來終止一個運行中的容器。終止狀態的容器能夠用docker container ls -a 命令看到。處於終止狀態的容器,能夠經過docker container start命令來從新啓動。此處,docker container restart命令會將一個運行態的容器終止,處於再從新啓動它。
進入容器
在使用-d參數時,容器啓動後進入後臺,某些時候須要進入容器進行操做,使用docker exec命令能夠進入到運行中。
exec命令 -i -t參數
docker exec後邊能夠跟多個參數,這是主要說明 -i -t參數。 只用-i參數時,因爲沒有分配僞終端,界面沒有咱們熟悉的Linux命令提示符,但命令執行結果仍然能夠返回。當-i -t參數一塊兒使用時,則能夠看到咱們熟悉的Linux命令提示符。
docker exec -it 容器id /bin/bash
導出和導入容器
導出容器
若是要導出本地某個容器,能夠使用docker export命令。
docker export 容器ID>導出文件名.tar
導入容器
能夠使用docker import從容器快照文件中再導入爲鏡像
cat 導出文件名.tar|docker import - 鏡像用戶/鏡像名:鏡像版本
此外,也能夠經過指定URL或者某個目錄來導入
docker import http://study.163.com/image.tgz example/imagerepo
刪除容器
刪除容器
能夠使用docker container rm來刪除一個處於終止狀態的容器
docker container rm ubuntu:16:04
若是要刪除一個運行中的容器,能夠添加-f參數。Docker會發送SIGKILL信號給容器。
清楚全部處於終止狀態的容器
用docker container ls -a 命令能夠查看全部已經建立的包括終止狀態的容器,若是數量太多要一個個刪除能夠會很麻煩,用下面的命令能夠清理掉全部處於終止狀態的容器。
docker container prune