iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
DevOps

從認識Docker到精通系列 第 12

第十二天-Recap docker

  • 分享至 

  • xImage
  •  

RECAP Docker

基本的 Docker概念、Dockerfile和docker-compose.yml的部分差不多結束了,再進入kubernetes之前,先讓我們複習一下吧!

Docker

Docker 是由 dotCloud 這間 PaaS 公司利用 go 語言編寫的虛擬化軟體,於2013年開源(repo在moby專案下),因為容器化和微服務的興起和受歡迎,讓他為各大專案利用,也是 K8s的基石之一。
相較於VM(虛擬機器),Docker 有著以下特點:

  • 跨平台
  • 校能較佳
  • 快速部署

安裝

可以在docker.io ,docker的官方網站下載,安裝過程記得 hyper-V 和 WSL2 的選項要勾,其他過程便不再贅述。

docker desktop、docker CLI、docker daemon??

  • docker desktop 是docker 在各大作業系統上的圖形化介面
  • docker CLI為docker 的Client介面,會和docker daemon做溝通
  • docker daemon 為docker的核心,負責分配資源、下載映像執行容器等

image v.s container

Image 的內容包含了建立一個虛擬環境需要用到的映像內容、腳本、相依元件和一些其他的二進位檔案,我們可以透過撰寫dockerfile來建立自己的映像檔,並上傳到docker hub等的倉庫 (registry) 中;Container,則是在宿主機器上正在執行image的個體,我們可以透過docker-compose.yml來讓多個Container在同一個網路環境溝通、使用同一個卷宗儲存資料。

Dockerfile

  • FROM :映像檔都是在一個映像上進行疊加 layer,形成新的映像,利用 FROM可以指定使用的 base Image
  • RUN :執行指令
  • COPYADD:複製檔案、或新增檔案到容器中
  • CMD:為container架設完之後執行的第一行指令,一個 stage 也只能有一條 CMD存在

multi-stage build

  • 我們可以在一個Dockerfile中把開發環境和部署環境做分隔,因為只有最後一個 stage 的Image會被留著,我們可以利用其他stage產出的東西 (例如build 之後的結果),來建立一個只存有必要物件、最小size的image

docker-compose.yml


啟動容器時,我們會使用docker run -<參數>來啟動容器,但若是我們要一次啟用多個容器,下多個docker run 指令便很不實際,若要配置網路、volume,那就會顯得更為麻煩,此時,我們便可以利用 Compose 工具來連續啟動多個container,並配置volume和networks 空間

因為昨天才剛打完就打個結語就好

top-level有四個部分,其中 versionservice 為必須,networks和volumes則看實際情形使用

  • version為指定的docker compose版本,因指令可能因時間而被汰除或新增,必須指定版本才不會跳錯;
  • service 即為app的其中一個微服務,我們可以在子項目指定要使用的image、網路環境、volume掛載位置等
  • (top-level) network:定義全域性質的網路,我們可以藉由適當的網路設定,建立出隔離的網路環境
  • (top-level) volume :定義全域性質的儲存空間

以上就是基本的docker,明天就會開始步入k8s的部分囉!


上一篇
第十一天-docker compose-networks
下一篇
第十三天-Kubernetes
系列文
從認識Docker到精通30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言