type
status
date
slug
summary
tags
category
icon
password
Docker推薦安裝一個直覺的理由為什麼要學 Docker介紹今天的主要架構Docker 架構 & 講古chrootJailsLinux VServerContainer 萌芽階段LXC (LinuX Containers)DockerDocker Hello World新手出擊:以 Python FastAPI 為例子建立客製化 Image (Dockerfile)MySQL 的部分簡單講解 MySQL & phpmyadmin怎麼用 Docker 把 MySQL 裝好Docker-compose關於 Volumn串接 MySQLNotionNotion 的基本操作一個文章的起手式分享給你的朋朋Notion Database炫炮功能分享LaTeX參考資料
Docker
推薦安裝
- Mac: Orbstack
- Windows:Docker Desktop
裝完在終端機打個老朋友指令測試一下
一個直覺的理由為什麼要學 Docker
使用 .exe 安裝 MySQL 在電腦上:
使用 docker 安裝+啟動 MySQL 在你的電腦上
介紹今天的主要架構
我們希望有一個後端,可以連接資料庫,跟它溝通
假如今天的東西你都不懂,那你可以怎麼做
- 想像 request
- 想像彼此溝通
- 想像全部都是軟體,或一個方塊
接著,因為假如每個你都自己裝都很麻煩,因此我們需要 Docker 這個東西,分點擊破
所以等等我們會先從建立後端的 Docker 開始
Docker 架構 & 講古
chroot
在 Unix V7 的開發階段出現的功能,可以吧 process 和 subprocess 的根目錄,改到其中一個資料夾
Jails
在 FreeBSD 出現,可以為 process 分配 ip
Linux VServer
還可以對記憶體進行分區
Container 萌芽階段
Solaris Containers, Open VZ(Open Virtuzzo), Process Containers
LXC (LinuX Containers)
第一個最完整的 Linux 容器管理實做,使用 cgroup 和 Linux namespaces,並且可以直接在 single Linux kernel 運行
Docker
提供一個很棒的容器管理介面
總之接下來就越來越成熟,另外, Docker 的重點還是在「管理」容器,容器本人就是容器,因此可能會問 K8s 跟 Docker 的關係,但還是要回到容器管理去想會比較好
Docker Hello World
所以今天的重點,當然是想要教大家怎麼建立屬於自己的 Container 當服務
不過在此之前要先對 docker 的世界簡單了解一下

首先有三個名詞:
- Image
- Container
- Repository
把 Image 當作藍圖,並且把 Container 當作執行的小電腦,而 Repo 是放 Image 的地方,而雲端是預設 Docker Hub
了解完這一張圖之後,來了解一些基本指令
- 看一下目前本地的 Image
- 把別人的 Image 拉下來
- 執行這個 image
- 查看 container 執行狀態
- 看一下 container 們
- 移除 container
- 移除 Image
到這邊應該對 Container 有一點想像了,但離要客製化自己的 image 還有一點點距離,因此我們這邊要用一個後端來給你一個例子
新手出擊:以 Python FastAPI 為例子
我們要使用的是 Python 的其中一個 package FastAPI,它可以給你一個快樂的後端,這邊不用會 Python 或後端都沒有關係,用想像的或用看的就好
先來看一下 Example Code

然後我們只要戳一下這個位置,它就會跑出這個畫面



但我們可以先想像我們希望達成的事情,也就是我們的後端被關在一個 container 裡面,那也很好想像裡面的環境應該要有 Python,並且要有我們的 code 對吧,所以我們要做以下幾個步驟
- 有 Python 的 image
- 客製化那個 image(要安裝 fastAPI 和 把程式碼放進去)
- 設定它 run 的時候, container 要把 port 打開
建立客製化 Image (Dockerfile)
先打開一個資料夾,並且新增幾個檔案
Dockerfile
看一下在客製化的階段我們做了什麼
- 我們用現有的 image python:3.8-slim 來客製化
- 我們把一些 requirements.txt 放進去我們的 container 裡面
- 就想像成 cd /app
- pip install 的感覺
- 把目前的東西 copy 到 /app ,目的是把程式碼放進去
- 設定當我們 run 這個 container 的時候,要做甚麼事情
requirements.txt
main.py
然後執行
我們的 image 就出生了,最後要 run 它
注意到我們的 run 多了幾個參數,其他可以自己查這邊不補充,主要想提到
- -d, 這個是讓你的終端機不要跑出 container 的 log
- -p 設定 container 對外的 port
MySQL 的部分
簡單講解 MySQL & phpmyadmin
這邊不去細談 SQL 之類的愛恨情仇資料庫關係
簡單來說, MySQL 就是你的資料庫本人, phpmyadmin 就是可視化界面,後者沒有世界還是可以運轉
不過因為他們是兩個不同的軟體,因此也很好想像,以 Docker 的角度,我們要開兩個 container 去管理他們
怎麼用 Docker 把 MySQL 裝好
- 設定帳號密碼
- port 的位置
- 一些眉角角的設定
- 先查網路再說,不要自己幹,看別人怎麼做,然後去模仿和確認你的需求
Docker-compose
你會發現前面我們會做太多的事情,都在一行一行打指令,要改某個東西就很麻煩
那我們有沒有辦法把想要打的指令全部設定在一個檔案裏面
直接執行一行就可以搞定,這就是 Docker compose
關於 Volumn
有些東西,你不希望 Container 關掉之後,重開一切都變成新的,例如你的資料庫
所以你需要 Volumn 這個酷東西
串接 MySQL
FastAPI
Dockerfile
requirement.txt
docker-compose.yaml
Notion
課前請大家先把帳號註冊好,分別是 overleaf, Notion
另外 Notion 推薦使用學校的信箱去註冊,學生可以免費升級 Pro (空間之類的比較大)
Notion 的基本操作
基本操作示範區一個文章的起手式
- 在一個大 Page 建立 page
- 把 icon 和背景圖片建立好
- 把 toc 放上去
- 把常用的連結丟一丟
分享給你的朋朋
Notion Database
炫炮功能分享
- Dashboard - https://indify.co/
- line 機器人的 database - https://developers.notion.com/
LaTeX
參考資料
- 作者:Q蛇
- 链接:/article/698e5cc4-1d56-41a3-98c4-1a20ca23654e
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。