---
# System prepended metadata

title: Docker 三十天筆記
tags: [Docker]

---

# Docker 三十天筆記
https://ithelp.ithome.com.tw/articles/10238198

## 基本介紹優點
* Docker 讓環境統一變得更容易，這有助於設計持續整合、持續部署的架構。
* 只要雲端服務或機器支援 Docker，就能運行 Docker 包裝好的服務。
* Docker 使用 Dockerfile 的純文字檔做為建置 image 的來源，這代表 Docker 實現了環境即程式碼（Infrastructure-as-code，IaC），環境資訊可以被版控系統記錄。
* 同為虛擬化技術，Docker（或指 container）的資源使用率較 VM 好，它直接跟底層共用作業系統，不需中間再隔一層作業系統虛擬層，因此啟動 container 非常快。
* Docker 應用場景橫跨開發與維運，也是 DevOps 熱門技能之一。
## Docker 系統架構
Docker 的系統的架構主要是 Client-Server 的架構，Client 的部份稱為 Docker Client，然後 Server 的部份稱為 Docker Daemon，介紹如下：

1. Docker Daemon：用來執行管理 Docker image、啟動 container、停止 container 的 service，它是一個 long time service。並且有提供 Restful API 給使用者做操作或是顯示一些 Docker container 的狀態訊息。在 Docker 1.11 之後將 Docker Daemo 的元件拆分為 containerd、docker-containerd-shim、docker-runc… 等等的元件。因為這有點的複雜，所以對 Docker 底層想要再做進一步研究的人，可以上網查詢這些元件的關鍵字。

1. Docker Client： 使用 Restful API 連到 Docker daemon，並且提供 command line 的方式讓使用者可以操作 docker。

## Cli
當對 Docker 原理了解清楚後，但又想在 CLI 方便管理 Docker 的話
https://github.com/jesseduffield/lazydocker

## docker search

如果想確認這個 image 是否可以下載，可以上 DockerHub 上找，或使用 docker search 指令查詢：

```
$ docker search busybox
NAME                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
busybox                   Busybox base image.                             1986                [OK]
...
```
這裡有個欄位 OFFICIAL 標示 OK，代表這個 image 是官方出品有掛保證的，通常會建議使用官方的 image，相較穩定可靠。

## 觀念重點區 
`docker run = docker pull + docker create + docker start`



注意 rm -f 是發出與 docker kill 相同的 SIGKILL 信號，而不是 docker stop 的 SIGTERM
docker rm -f web
加 --rm 選項可以讓它結束後自動移除，但得先用 docker stop 停止 container 才會觸發移除，那倒不如使用 docker rm -f 指令還比較直接一點。


## Port forwarding 開放服務
Container 具備了隔離機制，因此有辦法把它當作「輕量的 VM 」使用。

今天說明的 port forwarding，可以應用在任何有開 port 提供服務的 server，如：MySQL、Redis、Memcached 等，

###### tags: `Docker`