iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
DevOps

DevOps需要的技能樹...(應該)都點得到!系列 第 3

Day 3: Dockerfile 語法解析與實踐

  • 分享至 

  • xImage
  •  

本章節「Docker」概要

Day 2: Docker 基本概念與安裝指南
Day 3: Dockerfile 語法解析與實踐
Day 4: 如何使用 Docker Compose 管理多容器應用程式

Dockerfile指令

FROM: 指定基礎映像。
RUN: 執行命令並創建中間層。
COPY 或 ADD: 將文件從本地系統添加到映像中。
CMD 或 ENTRYPOINT: 設定容器啟動時執行的命令。
ENV: 設置環境變量。
EXPOSE: 聲明容器內部的端口。
WORKDIR: 設定工作目錄。
USER: 指定容器內的用戶。

實作:架設nginx web server

  • 準備專案資料夾
#建立一個新資料夾
mkdir nginx-static-site
#移動到該資料夾底下
cd nginx-static-site
#打開編輯器
sudo nano Dockerfile
  • 貼入以下內容,這個步驟叫做撰寫Dockerfile
#使用官方 Nginx 基礎映像
FROM nginx:latest

#設置環境變量
ENV AUTHOR="Your Name"

#複製本地的靜態網站資源到映像中
COPY ./html /usr/share/nginx/html

#開放 80 端口
EXPOSE 80

#使用預設的 Nginx CMD 指令啟動服務
CMD ["nginx", "-g", "daemon off;"]
  • 準備一個存放靜態網站資料夾
#再建立一個資料夾
mkdir html
#移動到該資料夾底下
cd html
#打開編輯器
sudo nano index.html
  • 貼入以下內容,這個步驟是寫一個靜態網站的測試頁面,語法為html
<!-- html/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome to Nginx</title>
</head>
<body>
    <h1>Welcome to My Static Website!</h1>
    <p>Powered by Nginx running inside Docker.</p>
</body>
</html>
  • 構建映像檔
#回到專案資料夾底下
cd ..
#構建映像檔的指令
docker build -t nginx-static-site .

https://ithelp.ithome.com.tw/upload/images/20240803/20168384FN5lq1t5Xt.jpg

  • 運行容器
    -d為背景執行
    -p為將容器的80端口映射到主機的80端口
docker run -d -p 8080:80 nginx-static-site

看到這個畫面就代表成功囉

https://ithelp.ithome.com.tw/upload/images/20240803/20168384f4wpkzZdiy.jpg

同場加映1.:清理環境

#查看運行中的容器並記下容器ID
docker ps
#停止容器
docker stop <容器ID>
#查看不管運行與否的所有容器並記下容器ID
docker ps -a
#移除容器
docker rm <容器ID>
#查看本地保存的映像檔並記下映像檔ID
docker images
#刪除映像檔
docker rmi <映像檔ID>

https://ithelp.ithome.com.tw/upload/images/20240803/20168384Vgr0zyiOEm.jpg

同場加映2.:映像檔從哪來的?

人人都可以註冊使用Docker Hub
而ngnix官方映像檔也可以前往Docker Hub驗證
在Docker Hub頁面點擊「tag」分頁也可以查看版本並在Dockerfile內指定版本
上面撰寫的「nginx:latest」是指拉取映像檔的最新版本
假設寫作「nginx:1.26.0」就是指定拉取1.26.0版本的映像檔


上一篇
Day 2: Docker 基本概念與安裝指南
下一篇
Day 4: 如何使用 Docker Compose 管理多容器應用程式
系列文
DevOps需要的技能樹...(應該)都點得到!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言