Docker 學習筆記
下載 docker & docker-compose on Rpi
什麼是 dockerfile
- Dockerfile 是一個包含指令的文字檔,可以根據這個檔案去呼叫指令以及 assemble image 檔
- Docker 可以根據 dockerfile 自動 build images
docker 三個名詞
- image
- build 好的一個包
- 可以自己用 docker build 做一個自己的 image
- 也可以 docker pull 從 docker hub 上載別人整理好的 image
- container
- 在電腦上跑起來的一個環境,可以同時有多個 container 執行
- volume
- 在 container 中的儲存單位,可以和電腦中的資料夾共通
dockerfile 格式詳解
docker 指令
image 指令
container 指令
- 啟動 container (在現有的 container 中開)
- 啟動 container (啟動一個新的 container)
什麼是 docker-compose
- Docker Compose 是一個工具可以讓你可以透過一個指令就可以控制所有專案(project)中所需要的 services
- Docker Compose 是用 YAML 檔案格式來描述和定義 project 中 services 運作關係
docker-compose 格式詳解
- docker-compose.yml 大概的長像
- .yml 是有縮排的,跟 python 一樣
version
- 一定要放在最上面,告訴 yml 是要使用哪一個版本的 docker-compose
service
- 放 docker image 執行方式的地方
- 服務可命名,也可以放多個服務
image
- 可以直接放從 docker hub pull 下來的 image
- 也可以指定版本的 tag
build
- 如果是要自己 build 一個 image 的話
- 要用 build 而不是 image
- context 是告訴 docker 你的 dockerfile 在哪裡
- dockerfile 則是 告訴 docker 你的 dockerfile 叫什麼名字,預設就是 Dockerfile
container_name
- 指定 container 的名稱
- 可以在打指令的時候不打 id 打名稱就可以了
command
- container 啟動後立刻執行的指令
- 如果要一次執行多個指令
networks
restart
- 指定如果起動失敗後要執行什麼
- always
- unless-stopped
- the containers will start automatically once the Docker Engine is restarted or any error occurs.
environment
- 定義環境變數
- 可以隨便自行定義
- 如果值是布林,要用單引號包起來,如 ' true '、' false '。
ports
- 格式是 host:container
- 把在 container 內的 port 打在主機上的一個 port
- 或是只指定 container,這時會隨機挑一個 host port 來用
volume
- 格式為 host:container
- 是一個路徑
- 可以把 container 內的某個資料夾同布到主機上的某上的資料夾
- 在主機上修改時,container 內也同部修改
reference
docker-compose 指令
- 把 docker-compose run 起來 (且 run 在背景)
- 觀看 docker-compose process 狀況
使用 nginx 把 react 部署
- nginx.conf
- 為了要讓 react router 有作用要修改一些地方
Reference
- 簡單的 docker 介紹
- flask + mongodb + nginx docker 部署
- docker 指令大全
- docker & docker-compose cheat sheet