將Docker image部屬到Minikube

閱讀時間約 5 分鐘
1. 建立docker image
首先,寫一個Node.js的簡單web程式,index.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
  res.send('Vic’s Hello World!');
});
app.listen(5000, () => {
  console.log('Listening on port 5000!');
});
可使用此指令來執行,看看有無問題:
$ node index.js

若沒有安裝nodejs記得先安裝:
$ sudo apt install nodejs

若沒有npm記得安裝:
$ sudo apt install npm

因為有用到express module記得安裝:
$ npm install express

確定都有安裝後,執行index.js:

將著寫一個Dockerfile,內容如下:
FROM node:8.9-alpine
RUN mkdir -p /hello_world
WORKDIR /hello_world
COPY index.js /hello_world
RUN npm install express
EXPOSE 5000
CMD [ "node", "index.js" ]

將Dockerfile跟index.js放在同一個path:


接著執行Dockerfile build docker image:
$ docker build -t vic/hello_world .

用指令確認 image 是否存在:
$ docker images |grep hello_world
=> 用關鍵字找
$ docker images
=> 列出全部

使用docker run 建立並執行container,之後使用curl測試web app,可看到成功得到reponse: Vic’s Hello World!
測試完畢後停止container。
$ docker run --name hello_world -d -p 3000:5000 vic/hello_world
$ curl localhost:3000
$ docker stop hello_world
#-name表示container的別名,-d表示在背景執行container,-p為port mapping(主機port:容器port)。

列出所有container:
$ docker ps -a 
2. 將docker image部屬到minikube
雖然 image 和 Kubernetes 都是在本機,但是 Kubernetes 要取得 image ,需要透過 image repository,如 DockerHub。
不過透過這種方式,可以讓minikube 用本機上的 image 來部署:
$ minikube start --driver=docker
=> 先啟動minikube
$ eval $(minikube docker-env)

在minikube建立pod:
$ kubectl run hello-world --image=vic/hello_world --restart=Never --image-pull-policy=Never
# --image-pull-policy=Never 表示要使用本機的image。


查看pods:
$ kubectl get pods
接下來使用minikube ssh驗證看看:
$ POD=$(kubectl get pods hello-world -o wide -o custom-columns=IP:status.podIP --no-headers)
=>取得pod ip
$ minikube ssh curl $POD:5000
這樣就成功部屬app到minikube囉!
#Note:
刪除pod:
$ kubectl delete pods hello-world


下一篇,透過NodePort service直接連線k8s pod中的app。

為什麼會看到廣告
20會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
Singleton design pattern
閱讀時間約 1 分鐘
Simple Factory design pattern
閱讀時間約 1 分鐘
Factory design pattern
閱讀時間約 1 分鐘
Abstract Factory design pattern
閱讀時間約 1 分鐘
什麼是CI/CD?
閱讀時間約 2 分鐘
使用Minikube安裝Kubernetes
閱讀時間約 6 分鐘
你可能也想看
創作者要怎麼好好休息 + 避免工作過量?《黑貓創作報#4》午安,最近累不累? 這篇不是虛假的關心。而是《黑貓創作報》發行以來可能最重要的一篇。 是的,我們這篇講怎麼補充能量,也就是怎麼休息。
Thumbnail
avatar
黑貓老師
2024-06-29
將一半的溫存分享給你現在的生活很完美,或許多了一個你可以更加完整
Thumbnail
avatar
Yuuu
2024-06-19
將 PDF 轉換為 Word:三種方法和重要提示這篇文章介紹了三種將 PDF 轉換為 Word 的方法,包括使用 Microsoft Word、在線轉換工具和 Adobe Acrobat DC。此外,文章提供了保存檔案、常見問題解答等相關提示。
Thumbnail
avatar
leqi.ai
2024-06-19
將培養心靈放在教育首位,熱愛大自然和家鄉,重視自己和他人~岡山県久米南町久米南町位於岡山縣的中心位置,以千龍町和法然上人的誕生寺而聞名,北庄和上籾田的梯田被選為日本梯田百選之一,擁有豐富的自然風光和溫暖的氣候,是一個自然與文化並存的小鎮。JR和國道縱貫縣中心南北,設有3個車站,可輕鬆前往縣內中心,國道53號線位於岡山縣約中部,距縣首府岡山市約40公里,距市區核心城市津山
Thumbnail
avatar
喬以思
2024-06-17
將自己湧向你真正的夢想凡你所願,宇宙必成就 你滿意自己的創造嗎?當新的願望像音符般在內心躍動時,你感覺得到驚喜嗎?你只會接收到「你已經準備好要接收的東西」,那你準備好自己了嗎? 你的宇宙建立於全然的圓滿,宇宙無時無刻都在向你顯現,無論是令人稱羨的成就、鍾愛的關係,或是任何美好的事物。你之所以來到這裡,是為了體
Thumbnail
avatar
Citta 心的小老師
2024-06-12
Gitlab CI/CD 與 Docker 之間關係前言 上次交到 Runner 與 Executor 運作方式,今天要來講 Gitlab 與 Docker 之間運作,我們來了解一下,Gitlab 是怎麼幫我們這些指令,之後在自動化佈署的章節會使用到,實現更又效率的佈署。 Gitlab Runner 運作 在這裡你會看到特別的名詞,像是 git
Thumbnail
avatar
Tim Bai
2023-11-18
如何使用 docker , 將群眾標註資料灌進 postgis 來分析(ㄧ)?那時做總統盃黑客松時,因為要GIS 分析,資料放在 postgresql-postgis,安裝與設定上實在是麻煩。於是想說用 docker 人家建好的 postgis。果然是有,然後...
Thumbnail
avatar
哈爸
2023-02-01
將最細碎的事情發揮到極致:郭強生《作家命》《作家命》的書名似乎暗示作家與命運的不可分割性,而英文稱之為The Destined Life更有種「早已注定」的意義。然而,郭強生的經歷告訴我們,作家之所以為作家,源自於無意間的累積、某個當下的選擇,才能譜出一個美麗的作品。
Thumbnail
avatar
Angus Yen
2021-11-11
將不間斷的幸福傳遞給有需要的孩子們每一次TDCA的關愛陪伴,都讓受贈的服務對象感受到滿滿的幸福感,一起協力完成手作皮革鑰匙圈,每一針每一線都在訓練孩子們手眼協調的肢體,透過不同花色皮革來搭配,不僅訓練孩子對色彩的辨識能力,同時也在培養眼界裡的審美觀噢!
Thumbnail
avatar
TDCA 社團法人中華民國身障關懷協會
2021-05-28
將幸福與成功的公式倒著寫!研究顯示:正面的人創造力提升31%,銷售能力提升37%!我們一直認為只要我更努力工作,我就會更成功,而成功了,我就會快樂了。我們慣用的這個幸福公式,是成立的嗎? Good Think Inc.的執行長、美國作家尚恩˙阿喬爾Shawn Achor卻在TedTalk中給了一種新的思考方式:成功不會引領你快樂,但快樂會讓你更成功!
Thumbnail
avatar
哈利熊HoliBear
2021-03-03
【 江蘇蘇州 】七都太湖濕地公園半日遊,另附如何買到俗擱大隻又肥美的大閘蟹攻略 【七都濕地公園】位於江蘇省蘇州市,是一座對外免費開放的公園。 這裡除了濕地植物種類豐富之外,還是個享譽海內外的湖蟹之鄉,水土資源非常豐富。 走在湖邊,可將太湖美景盡收眼底,這裡設有許多親水廊道,可以近距離欣賞湖光瀲灩。 如果用心去感受去挖掘…許多角落會是很好拍的景。 文末有大閘蟹正確吃法教學。
Thumbnail
avatar
吃貨雨神
2020-11-15