欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

k8s手動拉取docker鏡像的方法示例

 更新時間:2024年02月02日 11:20:06   作者:WiFi大拿  
docker是一種便捷的容器化解決方案,它可以通過拉取鏡像的方式輕松地部署和管理應(yīng)用程序,本文主要介紹了k8s手動拉取docker鏡像的方法示例,感興趣的可以了解一下

首先我們需要安裝 docker 來打包鏡像,如果你本地已經(jīng)安裝了 docker

推薦安裝方法

目前使用 Docker Desktop 來安裝 docker 還是最簡單的方案,打開官網(wǎng)下載對應(yīng)你電腦操作系統(tǒng)的包即可

k8s 怎么手動拉取docker鏡像_docker

當(dāng)安裝完成后,可以通過 docker run hello-world 來快速校驗是否安裝成功!

安裝 minikube

我們還需要搭建一套 k8s 本地集群 (使用云廠商或者其它 k8s 集群都可) 。本地搭建 k8s 集群的方式推薦使用 minikube。

可以根據(jù) minikube 快速安裝 來進(jìn)行下載安裝,這里簡單列舉 MacOS 的安裝方式,Linux & Windows 操作系統(tǒng)可以參考官方文檔 快速安裝。

brew install minikube

啟動 minikube

因為 minikube 支持很多容器和虛擬化技術(shù) (Docker, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation),也是問題出現(xiàn)比較多的地方,所以這里還是稍微說明一下。

如果你使用 docker 的方案是上面推薦的 Docker Desktop ,那么你以下面的命令啟動 minikube 即可,需要耐心等待下載依賴。

minikube start --vm-driver docker --container-runtime=docker

啟動完成后,運行 minikube status 查看當(dāng)前狀態(tài)確定是否啟動成功!

如果你本地只有 Docker CLI,判斷標(biāo)準(zhǔn)如果執(zhí)行 docker ps 等命令,返回錯誤

 brew install hyperkit
minikube start --vm-driver hyperkit --container-runtime=docker

# Tell Docker CLI to talk to minikube's VM
eval $(minikube docker-env)

# Save IP to a hostname
echo "`minikube ip` docker.local" | sudo tee -a /etc/hosts > /dev/null

# Test
docker run hello-world

minikube 命令速查

minikube stop 不會刪除任何數(shù)據(jù),只是停止 VM 和 k8s 集群。

minikube delete 刪除所有 minikube 啟動后的數(shù)據(jù)。

minikube ip 查看集群和 docker enginer 運行的 IP 地址。

minikube pause 暫停當(dāng)前的資源和 k8s 集群

minikube status 查看當(dāng)前集群狀態(tài)

安裝 kubectl

這一步是可選的,如果不安裝的話,后續(xù)所有 kubectl 相關(guān)的命令,使用 minikube kubectl 命令替代即可。

如果你不想使用 minikube kubectl 或者配置相關(guān)環(huán)境變量來進(jìn)行下面的教學(xué)的話,可以考慮直接安裝 kubectl。

brew install kubectl

注冊 docker hub 賬號登錄

因為默認(rèn) minikube 使用的鏡像地址是 DockerHub,所以我們還需要在 DockerHub 賬號,并且使用 login 命令登錄賬號。

docker login

k8s 怎么手動拉取docker鏡像_docker_02

Container

我們的旅程從一段代碼開始。新建一個 main.go 文件,復(fù)制下面的代碼到文件中。

package main

import (
	"io"
	"net/http"
)

func hello(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "[v1] Hello, Kubernetes!")
}

func main() {
	http.HandleFunc("/", hello)
	http.ListenAndServe(":3000", nil)
}

上面是一串用 Go 寫的代碼,代碼邏輯非常的簡單,首先啟動 HTTP 服務(wù)器,監(jiān)聽 3000 端口,當(dāng)訪問路由 /的時候 返回字符串 [v1] Hello, Kubernetes!。

在以前,如果你想將這段代碼運行起來并測試一下。你首先需要懂得如何下載 golang 的安裝包進(jìn)行安裝,接著需要懂得 golang module 的基本使用,最后還需要了解 golang 的編譯和運行命令,才能將該代碼運行起來。甚至在過程中,可能會因為環(huán)境變量問題、操作系統(tǒng)問題、處理器架構(gòu)等問題導(dǎo)致編譯或運行失敗。

但是通過 Container (容器) 技術(shù),只需要上面的代碼,附帶著對應(yīng)的容器 Dockerfile 文件,那么你就不需要 golang 的任何知識,也能將代碼順利運行起來。

Container (容器) 是一種沙盒技術(shù)。它是基于 Linux 中 Namespace / Cgroups / chroot 等技術(shù)組合而成,更多技術(shù)細(xì)節(jié)可以參照這個視頻 如何自己實現(xiàn)一個容器。

下面就是 Go 代碼對應(yīng)的 Dockerfile,簡單的方案是直接使用 golang 的 alpine 鏡像來打包,但是因為我們后續(xù)練習(xí)需要頻繁的推送鏡像到 DockerHub 和拉取鏡像到 k8s 集群中,為了優(yōu)化網(wǎng)絡(luò)速度,我們選擇先在 golang:1.16-buster 中將上述 Go 代碼編譯成二進(jìn)制文件,再將二進(jìn)制文件復(fù)制到 base-debian10 鏡像中運行 (Dockerfile 不理解沒有關(guān)系,不影響后續(xù)學(xué)習(xí))。

這樣我們可以將 300MB 大小的鏡像變成只有 20MB 的鏡像,甚至壓縮上傳到 DockerHub 后大小只有 10MB!

# Dockerfile
FROM golang:1.16-buster AS builder
RUN mkdir /src
ADD . /src
WORKDIR /src

RUN go env -w GO111MODULE=auto
RUN go build -o main .

FROM gcr.io/distroless/base-debian10

WORKDIR /

COPY --from=builder /src/main /main
EXPOSE 3000
ENTRYPOINT ["/main"]

需要注意 main.go 文件需要和 Dockerfile 文件在同一個目錄下,執(zhí)行下方 docker build 命令,第一次需要耐心等待拉取基礎(chǔ)鏡像。并且需要注意將命令中 guangzhengli 替換成自己的 DockerHub 注冊的賬號名稱。 這樣我們后續(xù)可以推送鏡像到自己注冊的 DockerHub 倉庫當(dāng)中。

docker build . -t guangzhengli/hellok8s:v1
# Step 1/11 : FROM golang:1.16-buster AS builder
# ...
# ...
# Step 11/11 : ENTRYPOINT ["/main"]
# Successfully tagged guangzhengli/hellok8s:v1


docker images
# guangzhengli/hellok8s          v1         f956e8cf7d18   8 days ago      25.4MB

docker build 命令完成后我們可以通過 docker images 命令查看鏡像是否 build 成功,最后我們執(zhí)行 docker run 命令將容器啟動, -p 指定 3000 作為端口,-d 指定容器后臺運行。

docker run -p 3000:3000 --name hellok8s -d guangzhengli/hellok8s:v1

運行成功后,可以通過瀏覽器或者 curl 來訪問 http://127.0.0.1:3000 , 查看是否成功返回字符串 [v1] Hello, Kubernetes!。

這里因為我本地只用 Docker CLI,而 docker runtime 是使用 minikube,所以我需要先調(diào)用 minikube ip 來返回 minikube IP 地址,例如返回了 192.168.59.100,所以我需要訪問 http://192.168.59.100:3000 來判斷是否成功返回字符串 [v1] Hello, Kubernetes!。

最后確認(rèn)沒有問題,使用 docker push 將鏡像上傳到遠(yuǎn)程的 DockerHub 倉庫當(dāng)中,這樣可以供他人下載使用,也方便后續(xù) Minikube 下載鏡像使用。 需要注意將 guangzhengli 替換成自己的 DockerHub 賬號名稱。

docker push guangzhengli/hellok8s:v1

經(jīng)過這一節(jié)的練習(xí),有沒有對容器的強大有一個初步的認(rèn)識呢?可以想象當(dāng)你想部署一個更復(fù)雜的服務(wù)時,例如 Nginx,MySQL,Redis。你只需要到 DockerHub 搜索 中搜索對應(yīng)的鏡像,通過 docker pull 下載鏡像,docker run 啟動服務(wù)即可!而無需關(guān)心依賴和各種配置

到此這篇關(guān)于k8s手動拉取docker鏡像的方法示例的文章就介紹到這了,更多相關(guān)k8s手動拉取docker鏡像內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 初次使用Docker的體驗筆記總結(jié)

    初次使用Docker的體驗筆記總結(jié)

    這篇文章主要介紹了初次使用Docker的體驗筆記總結(jié),對初學(xué)Docker具有一定的參考價值,有需要的可以了解一下。
    2016-11-11
  • Docker部署Prometheus的實現(xiàn)示例

    Docker部署Prometheus的實現(xiàn)示例

    Prometheus是一款開源的監(jiān)控和告警工具,它可以收集系統(tǒng)的各種指標(biāo)數(shù)據(jù),如CPU使用率、內(nèi)存使用量等,本文主要介紹了Docker部署Prometheus的實現(xiàn)示例,感興趣的可以了解一下
    2024-08-08
  • 使用docker?compose快速配置一組容器服務(wù)詳解

    使用docker?compose快速配置一組容器服務(wù)詳解

    這篇文章主要為大家介紹了使用docker-?compose快速配置一組容器服務(wù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 在 docker 之間導(dǎo)出導(dǎo)入鏡像的方法

    在 docker 之間導(dǎo)出導(dǎo)入鏡像的方法

    本篇文章主要介紹了在 docker 之間導(dǎo)出導(dǎo)入鏡像的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Docker中如何刪除image(鏡像)的方法

    Docker中如何刪除image(鏡像)的方法

    這篇文章主要介紹了Docker中如何刪除image(鏡像)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • docker搭建本地私有倉庫的實現(xiàn)

    docker搭建本地私有倉庫的實現(xiàn)

    有時候使用Docker Hub這樣的公共倉庫可能不方便,這種情況下用戶可以使用registry創(chuàng)建一個本地倉庫供私人使用,本文主要介紹了docker搭建本地私有倉庫的實現(xiàn),感興趣的可以了解一下
    2023-12-12
  • 如何快速清理 docker 資源的方法

    如何快速清理 docker 資源的方法

    這篇文章主要介紹了如何快速清理 docker 資源,具體點說就是刪除那些無用的 鏡像、容器、網(wǎng)絡(luò)和數(shù)據(jù)卷,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • docker命令中必須加上sudo的問題解決方法

    docker命令中必須加上sudo的問題解決方法

    本文主要介紹了docker命令中必須加上sudo的問題解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Docker教程之Ubuntu 安裝 Docker詳細(xì)介紹

    Docker教程之Ubuntu 安裝 Docker詳細(xì)介紹

    這篇文章主要介紹了Docker教程之Ubuntu 安裝 Docker詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 解決docker加載新的鏡像后repository和tag名稱都為none的問題

    解決docker加載新的鏡像后repository和tag名稱都為none的問題

    這篇文章主要介紹了解決docker加載新的鏡像后repository和tag名稱都為none的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論