Google Code Prettify

2018年1月3日 星期三

docker 基本指令

在「Installing and Configuring Docker (Scientific Linux 7.3)」中已經安裝好 docker,這裡來試用看看 …
  • docker images
這個指令會列出所有已安裝的鏡像,因為這個時候才剛安裝好 docker,沒有任何鏡像。
  •  docker pull centos
由 docker hub 上拉取 CentOS 鏡像,再下一次 docker images,如下,可以看到 centos 鏡像已經存在本機。
上圖列出來的項目共有五欄,說明如下:
    • REPOSITORY: 鏡像名稱 (docker.io/centos)
    • TAG: 鏡像的標籤,上圖顯示 latest,表示這個鏡像是最新版本。
    • IMAGE ID: 鏡像的序號,這個序號很重要,每個 image 會有一個唯一的序號,後續如果要操作這個鏡像,會用到這個序號。
    • CREATED: 鏡像創建的時間,表示的方式是離現在的時間多久。
    • SIZE: 鏡像的大小
  •  docker search centos
search 指令可以在 docker hub 上找出指定的鏡像,如上圖,列出了所有 centos 的鏡像。
  •  docker save centos > centos.tar
想把鏡像存起來? 用這個指令,導出成一個 tar 檔,完成後,可以 ls 看一下,約 200 MB,帶著這個 tar 檔,可以在別的 docker 機器上導入,這在公司裡應該會常用到,因為大部分的公司會有防火牆,server 不一定可以隨意的連線到 docker hub,所以在可以連線的地方先拉取一個鏡像儲存後,帶到要安裝的 server 導入。
  •  docker load < centos.tar
上面就是導入鏡像的指令
  •  docker run -i -t centos /bin/bash
如上,即可啟動容器,參數說明如下:
    • -i : 啟動容器打開標準輸入 (STDIN) ,之後即可使用鍵盤輸入。
    • -t : 啟動容器後給予容器一個虛擬的終端設備 (pseudo-TTY),讓使用者可以與容易對話。 
    • centos : 要運行的鏡像名稱,更嚴謹的輸入方式是 centos:latest,表示要使用最新版本,沒有打 latest,就預設是最新版本。
    • /bin/bash : 容器啟動後執行的程式,這裡指定 bash (UNIX 的一種 shell),所以可以看到如上圖所示,進入了一個提示字元為 [root@27b5c5977301 /] 的環境,27b5c5977301 是容器的序號。
  •  docker ps
在本機開啟另一個命令視窗,輸入如上指令,可以看到正在運行的容器,各欄位說明如下:
    • CONTAINER ID: 容器序號
    • IMAGE: 鏡像名稱
    • COMMAND: 啟動容器時執行的命令
    • CREATED: 容器創建的時間
    • STATUS: 容器運行的狀態
    • PORTS: 容器暴露的端埠號
    • NAMES: 容器的名稱,由 docker 自動產生,不喜歡這個名稱? 可以在 run 時加上 -name 來指定名稱。
docker ps 後面還可以帶參數,常用的如下:
    • -a : 列出所有容器 (包含運行中及已停止的)
    • -l : 列出最近創建的容器
    • -n : 列出 n 個最近創建的容器
    • -q : 僅列出 CONTAINER ID 欄位
    • -s : 在輸出的欄位中,增加 SIZE 欄位,用來顯示容器大小。
  •  docker attach 27b5c5977301
剛剛下 run 啟動容器後,如果離開了又想重新進入,就用 attach 指令,並以容器序號當參數。
  •  docker start 27b5c5977301
 容器關閉後要啟動就用 start,關閉用 stop,重新啟動用 restart,除了 stop 外,也可以用 kill 關閉容器,兩者差別在於 kill 是立即關閉,stop 則會略等一小段時間後關閉。
  •  docker rm 27b5c5977301
刪除容器用 rm,運行中的容器無法直接刪除,可以加上 -f 強制刪除。
  •  docker rmi -f docker.io/centos
rmi 指令用在刪除鏡像,加上 -f 也是強制刪除。上面的參數用鏡像名稱,也可以使用鏡像序號。
  • docker export 容器序號(或容器名稱) > xxx.tar
  • docker import xxx.tar 容器名稱/centeos:latest
前面提供使用 save、load 儲存鏡像和導入鏡像,如果要儲存容器及導入容器則是用上面這兩個指令。差別在於,儲存容器是指儲存正在運行的容器的當時狀態,這會包含容器已運行的一些歷史紀錄,所以檔案會比較大。




沒有留言:

張貼留言