iT邦幫忙

2023 iThome 鐵人賽

DAY 15
1
AI & Data

Airflow 是什麼? 能吃嗎 ? 數據水管工的超級蘑菇系列 第 15

[Day15] 吃了容器果實的鯨魚拉布-Docker(2)

  • 分享至 

  • xImage
  •  

安裝 Docker

Docker Desktop 下載

https://www.docker.com/products/docker-desktop/
https://ithelp.ithome.com.tw/upload/images/20230930/20135427u36aMXm6Ww.png

https://ithelp.ithome.com.tw/upload/images/20230930/20135427IFWlxDAByv.png

Docker溝通方式

https://ithelp.ithome.com.tw/upload/images/20230930/20135427GNY3rf53ff.png
Ref:Docker官方文章
Docker 是 client-server 模式在溝通,Client 端會和 Docker Daemon 發 Requests,Docker Daemon 會依照不同需求和 Image / Container 溝通,或是從遠端的 Registry 拉 Image 下來,處理後再回傳結果給 Client 端,所以執行前要先啟動 Docker Desktop,後續要直接在 App 當中操作或是下指令都可以。

Dockerfile

建立 requirements.txt 和 test.py

通常在建立python環境時,因為要安裝的library很多,所以都會用 requirements.txt來記錄安裝的內容和版本,這次就先安裝個 requests 來當作範例,Requests 應該算很常見的 Python 模組,負責處理 HTTP 的溝通

requests==2.31.0

將測試的 code 放到 test.py 當中

import requests
print(requests.__version__)

創建 Dockerfile

Dockerfile 的檔案名稱就是 Dockerfile 記得 D 要大寫,然後貼上下方內容

FROM python:3.9-alpine
WORKDIR /usr/src/app
COPY requirements.txt .
COPY test.py .
RUN pip install -r requirements.txt
CMD [ "python", "./test.py"]

FROM: 放入基底映像檔資訊,注意 Dockerfile 第一條指令必須為 FROM 指令
WORKDIR: 設定專案的工作目錄
COPY: 複製檔案到專案裡面
RUN: 執行pip安裝
CMD: 在容器中要執行的command

使用 Dockerfile 建立 Image

docker build

docker build 會讀取路徑下的 Dockerfile,並將所有內容發送給 Docker 伺服端,由伺服端來建立映像檔。

docker build -t python-env .

我們用 docker build 建立 Image 文件,名稱就叫做 python-env,後面的. 就是代表要建立在當前目錄

注意在執行之前,要先打開 Docker Desktop,這樣才能和 Docker Daemon 溝通。

  • docker image ls列出當前所有的image
REPOSITORY       TAG       IMAGE ID       CREATED          SIZE
python-env       latest    72812913fd45   10 seconds ago   57.4MB

使用 Image 建立 Container

使用 docker run 就能夠把運行環境跑起來

docker run python-env

https://ithelp.ithome.com.tw/upload/images/20231001/20135427ogBOEAv2iz.png

  • 列出當前的Container
docker ps -a

-a 可以列出所有的容器,包含停止的容器

Docker 常用指令

指令 用途
docker rmi <image_id> 移除映像檔
docker stop <container_id> 停止容器
docker start <container_id> 開始容器
docker restart <container_id> 重啟,先停止再開始容器
docker rm <container_id> 移除暫停的容器

結語

今天不知道為什麼,整個 Markdown 都很卡,我的電腦也是,之後會把執行過程的截圖補上來,應該還有Python的程式範例執行,明天會直接開始裝 airflow 的 docker-compose 了,用 docker-compose 安裝也是官方建議的方式/images/emoticon/emoticon61.gif


上一篇
[Day14] 吃了容器果實的鯨魚拉布-Docker(1)
下一篇
[Day16] 用 Docker Compose 建立 Airflow 環境
系列文
Airflow 是什麼? 能吃嗎 ? 數據水管工的超級蘑菇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Shawn
iT邦新手 5 級 ‧ 2023-10-03 20:48:54

10/3更新:已補好內容,都有截圖和程式執行了~/images/emoticon/emoticon34.gif

我要留言

立即登入留言