Docker運行容器前需要本地存在對應的鏡像,如果本地不存在該鏡像,Docker會從鏡像倉庫下載該鏡像。
從Docker鏡像倉庫獲取鏡像的命令是docker pull。其命令格式為:
docker pull [選項][Docker Registry地址[:端口號]/]倉庫名[:標簽]
具體的選項可以通過docker pull --help命令看到,這里我們說一下鏡像名稱的格式。Docker鏡像倉庫地址:地址的格式一般是<域名/IP>[:端口號]。默認地址是Docker Hub。倉庫名:如之前所說,這里的倉庫名是兩段式名稱,即<用戶名>/<軟件名>。對于Docker Hub,如果不給出用戶名,則默認為library,也就是官方鏡像。
docker pull ubuntu:16.04
上面的命令中沒有給出Docker鏡像倉庫地址,因此將會從Docker Hub獲取鏡像。而鏡像名稱是ubuntu:16.04,因此將會獲取官方鏡像library/ubuntu倉庫中標簽為16.04的鏡像。
有了鏡像后,我們就能夠以這個鏡像為基礎啟動并運行一個容器。以上面的ubuntu:16.04為例,如果我們打算啟動里面的bash并且進行交互式操作的話,可以執行下面的命令。
docker run -it --rm ubuntu:16.04 bash
-it:這是兩個參數,一個是-i:交互式操作,一個是-t終端。
--rm:這個參數是說容器退出后隨之將其刪除
ubuntu:16.04:這是指用ubuntu:16.04鏡像為基礎來啟動容器。
bash:放在鏡像名后的是命令,這里我們希望有個交互式shell,因此用的是bash。
最后我們通過exit退出了這個容器。
要想列出已經下載下來的鏡像,可以使用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)
容器是獨立運行的一個或一組應該,以及它們運行態環境。對應的,虛擬機可以理解為模擬運行的一整套操作系統(提供了運行態環境和其他系統環境)和跑在上面的應用。
啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動,另外一個是將在終止狀態(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在后臺運行的標準操作包括:
很多時間,需要讓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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。