iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 26
0

Eric: 介紹完 Docker 的背景與相關名詞後,直接進入主題吧。

吉米: 是啊,先教我一下 Docker 的基本操作方式。

Eric: 沒問題,我們先來安裝 Docker 吧。


1. 安裝 Docker

由於 Docker 政策的因素,是無法直接在 Docker 官網下載 Docker CE。必需經過 Docker store ,才能下載 Docker CE 。

Docker Store 必需登入帳戶,才能進行下載動作。如果沒有帳戶,記得申請帳戶。筆者選擇 Desktop Docker 中 Docker for windows

docker_office_web

安裝時,不用額外設定,只要順著指示步驟進行安裝,就能完成設定。

要注意的是,如果準備安裝 Docker for Windows 的作業系統,不是 Windows 10 ProEnterpriseWindows Server 2016 ,會出現以下的畫面,然後就停止安裝動作。

docker_cannot_install

但是,要補充一點,在 Docker 完裝完成後,假若機器是第一次安裝 Docker ,會出現 close and log out 的按鈕:反之,只會出現 close 的按鈕。筆者沒注意到,結果直接登出,寫到一半的文章,直接說 Bye-byte。

2. 啟用 Docker

當啟用 Docker for Windows 時,Docker 會自行確認所需的技術或功能是否有開啟支援。若未開啟相關功能,Docker 會詢問是否要開啟。

同意由 Docker 幫助開啟功能的話,當然會自動重新開機。反之,Docker 會直接告知無法啟動 Docker。

startup hybird-V

在啟動後,Docker 會要求使用者登入。

Image 015

實際上,登入與否的差異,只差在能否存取 Docker Hub 的 Repositories 。

在本機,Docker 還是可以正常操作。

Image 019

3. 常用 Docker command

3.1 版本資訊

docker --version
docker version

這兩個指令,都可以取回目前 docker 的版本資訊。其中docker version 取回的資料較為詳細。

docker_cmd_version

3.2 docker image 的管理

我們使用 docker 來運行軟體時,一定要指定 docker image,讓 docker 建立一個基於 image(定義) 的 container(程序) 。

運用 docker image 配合參數,就可以對 image 進行操作。

cmd_image

# image list
docker image ls

如果不確定目前存在那些 image ,可以用這個指令,產出 image 的列表清單。可以檢視到 image 的名稱、建立時間與大小、

# create/build image
docker image build [dockerfile path]

如果沒有所需要的 image ,也可以自己建立一個 image。而建立 image 所需要的參數設定,是使用 YAML 格式所撰寫的 Dockerfile。

關於 dockerfile 的設定,後面會仔細說明。這邊就先略過,不多加說明。

# 從 remote repository (docker hub) 下載 image
docker pull hello-world

當然,可以使用其他人己經創建的 Image,目前最大的公開 Repository 就是 Docker Hub。

我們可以從 Docker Hub 找到許多現成的 Image。

# 移除 image
docker image rm hello-world

若 image 己經確定不會再用到,也可以將其移除。

下面是筆者針對 image 的操作畫面。

cmd_image_remove

3.3 Container 的啟動與停止

前面,筆者從 Docker Hub 取得 busybox 的 image,那我們來執行 busybox 這個 image。

# run docker image
docker run IMAGE

當 image 己經準備完成,接著就啟動 container 了。

使用 docker run busybox 的方式,告知 Docker Engine ,以 busybox Image 啟動 container。

cmd_run_1

# container list
# method 1
docker ps
# method 2
docker container ls

在啟動 container 後,可以使用 docker ps 進行確認 container 是否有被啟動。

cmd_run_2

可是查到的資料,看不到剛剛啟動的 busybox 。

因為 busybox 在完成動作後,就會直接結束。而 docker ps 只會列出執行中的 container。

# show all containers. include STATUS=exited
docker ps -a

所以,利用 -a 將所有的 container 都列出來後,就可以看到使用 busybox image 所建立的 container。

cmd_run_3

# restart container
# method 1
docker start CONTAINER
# method 2
docker container start b4bb88e021b9

假若要執行的 container 己經存在,可以運用 start 來啟動己經停止的 container。在 命令中的 CONTAINER,可以輸入 CONTAINER IDName

cmd_container_start

# remove unused data
docker system prune

以筆者以言,看到己經執行完成的 container 一直存在清單之中,就覺得怪不舒服。

所以可以用 docker system prune ,將沒有使用的 container 刪除。

cmd_system_prune


吉米: Docker 現在也成功安裝與執行了,那接下來的重點,就是把公司現在的服務轉成 Docker Image。

Eric: 沒錯,不過接下來的工程有點多,先休息一下,下午再繼續如何?

吉米: 沒問題。

<< 待續 >>


延伸閱讀

  1. Docker Documentatin
  2. 全面易懂的Docker指令大全
  3. Docker —— 从入门到实践

上一篇
25. Docker - 介紹
下一篇
27. Docker - Docker Image
系列文
從零開始建立自動化發佈的流水線30

尚未有邦友留言

立即登入留言