點燈坊

失くすものさえない今が強くなるチャンスよ

使用 Docker 執行 Ubuntu

Sam Xiao's Avatar 2021-10-30

以前在 macOS 安裝 Ubuntu 都要先安裝 Parallel Desktop,然後再將 Ubuntu 安裝在 Parallel Desktop 上,安裝了 Docker Desktop for macOS 後,只要下載 Ubuntu 的 Docker Image,Ubuntu 就能以 Container 形式跑在 Docker 上。

Version

Ubuntu 16.04.4 LTS

Ubuntu Image

$ docker search ubuntu

使用 docker search 搜尋 Docker Hub 的 image。

ubuntu000

  1. 使用 Docker 第一步就是使用 docker search 到 Docker Hub 搜尋 image 下載
  2. 找到 ubuntu image
  3. 7234 star
  4. 為 official image

下載 Docker image 時,盡量使用 official image,而不要使用別人包過的 image,因為可能會有後門或木馬

docker run

$ docker run --name MyUbuntu -dt ubuntu

使用 docker run 由 image 建立 container,當 Docker 發現本機沒有 image,會自動從 Docker Hub 下載。

  • --name : 替 container 取一個人能夠識別的名字 MyUbuntu ( 若省略,Docker 將隨機命名 )
  • -d : detach,建立 container 後,就脫離目前 process
  • -t : terminal,預設執行 /bin/bash process,為了讓 container 啟動後不會立即停止
  • ubuntu : Ubuntu 的官方 image 名稱

Docker container 重要觀念

One process per container

  • 一個 container 應該只有 process
  • 若有多個 process,就應該有多個 container
  • process 執行完,container 則釋放停止執行

當 process 執行完,container 會自動釋放,ubuntu image 預設並沒有執行任何 process,所以 start 完後會自動釋放,為了讓 container 不會執行完立即釋放,因此特別加上 -t,讓此 container 預設執行 bash,使的 container 不會釋放

ubuntu002

  1. 使用 docker run 建立 container 並執行 bash

docker ps

$ docker ps
  • ps : p resent state,使用 docker ps 顯示 正在執行 的 container。

ubuntu005

  1. 輸入 docker ps
  2. MyUbuntu container 正在執行中

Login Ubuntu

$ docker exec -it MyUbuntu bash

使用 docker exec 對已經執行中的 container 下指令。

  • -i : interactive,可對 terminal 輸入資料
  • -t : terminal,可對 terminal 顯示資料
  • MyUbuntu : Container 名稱
  • bash : 對 container 下的指令

ubuntu007

  1. 輸入 docker exec -it 進入 container 的 terminal
  2. 輸入 ll
  3. 顯示 Ubuntu 內的目錄結構

如此可證明 Ubuntu 已經正常啟動

Exit Ubuntu

$ exit

使用 exit 離開 Ubuntu 的 terminal。

ubuntu008

Stop Ubuntu

$ docker stop MyUbuntu

使用 docker stop 停止 container。

ubuntu010

  1. 輸入 docker stop MyUbuntu 停止 MyUbuntu container
  2. 輸入 docker ps 顯示目前執行中的 container

目前已經沒有執行中的 container,表示 Ubuntu 已經停止執行

Start Ubuntu

$ docker start MyUbuntu
$ docker ps

使用 docker start 重新啟動已經在硬碟,但還沒有執行的 container。

使用 docker ps 顯示目前執行中的 container。

ubuntu006

  1. 輸入 docker start MyUbuntu 啟動 MyUbuntu container
  2. 輸入 docker ps 顯示目前執行中的 container
  3. MyUbuntu container 執行中

Delete Ubuntu

$ docker rm MyUbuntu

使用 docker rm 刪除在硬碟中的 container。

ubuntu011

  1. 輸入 docker rm MyUbuntu 刪除 MyUbuntu container,由於 container 正在執行中,無法刪除
  2. 輸入 docker stop MyUbuntu 停止 MyUbuntu container
  3. 再次輸入 docker rm MyUbuntu 刪除 MyUbuntu container,此次刪除成功
  4. 輸入 docker ps -a 顯示所有在硬碟的 container,確認已經沒有任何 container

要刪除 container 之前,必須先停止 container,才能加以刪除。

docker images

$ docker images

使用 docker images 顯示目前在硬碟所有的 image。

ubuntu012

  1. 輸入 docker images 顯示目前在硬碟的所有 image
  2. 目前有 ubuntu image

Delete Image

$ docker rmi ubuntu

使用 docker rmi 刪除 image。

  • rm : 刪除
  • i : image

ubuntu013

  1. 輸入 docker rmi ubuntu 刪除 ubuntu image
  2. 輸入 docker images 確認是否 image 已被刪除

Summary

ubuntu014

Conclusion

  • 本文使用 Docker 快速建立 Ubuntu 測試環境,均為Docker 最基本的操作,是使用 Docker 一定要會的基本 command