亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

k8s手動(dòng)拉取docker鏡像的方法示例

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

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

推薦安裝方法

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

k8s 怎么手動(dòng)拉取docker鏡像_docker

當(dāng)安裝完成后,可以通過(guò) docker run hello-world 來(lái)快速校驗(yàn)是否安裝成功!

安裝 minikube

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

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

brew install minikube

啟動(dòng) minikube

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

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

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

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

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

 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 不會(huì)刪除任何數(shù)據(jù),只是停止 VM 和 k8s 集群。

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

minikube ip 查看集群和 docker enginer 運(yùn)行的 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)境變量來(lái)進(jìn)行下面的教學(xué)的話,可以考慮直接安裝 kubectl。

brew install kubectl

注冊(cè) docker hub 賬號(hào)登錄

因?yàn)槟J(rèn) minikube 使用的鏡像地址是 DockerHub,所以我們還需要在 DockerHub 賬號(hào),并且使用 login 命令登錄賬號(hào)。

docker login

k8s 怎么手動(dòng)拉取docker鏡像_docker_02

Container

我們的旅程從一段代碼開始。新建一個(gè) 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 寫的代碼,代碼邏輯非常的簡(jiǎn)單,首先啟動(dòng) HTTP 服務(wù)器,監(jiān)聽 3000 端口,當(dāng)訪問(wèn)路由 /的時(shí)候 返回字符串 [v1] Hello, Kubernetes!。

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

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

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

下面就是 Go 代碼對(duì)應(yīng)的 Dockerfile,簡(jiǎn)單的方案是直接使用 golang 的 alpine 鏡像來(lái)打包,但是因?yàn)槲覀兒罄m(xù)練習(xí)需要頻繁的推送鏡像到 DockerHub 和拉取鏡像到 k8s 集群中,為了優(yōu)化網(wǎng)絡(luò)速度,我們選擇先在 golang:1.16-buster 中將上述 Go 代碼編譯成二進(jìn)制文件,再將二進(jìn)制文件復(fù)制到 base-debian10 鏡像中運(yùn)行 (Dockerfile 不理解沒(méi)有關(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 文件在同一個(gè)目錄下,執(zhí)行下方 docker build 命令,第一次需要耐心等待拉取基礎(chǔ)鏡像。并且需要注意將命令中 guangzhengli 替換成自己的 DockerHub 注冊(cè)的賬號(hào)名稱。 這樣我們后續(xù)可以推送鏡像到自己注冊(cè)的 DockerHub 倉(cāng)庫(kù)當(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 命令完成后我們可以通過(guò) docker images 命令查看鏡像是否 build 成功,最后我們執(zhí)行 docker run 命令將容器啟動(dòng), -p 指定 3000 作為端口,-d 指定容器后臺(tái)運(yùn)行。

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

運(yùn)行成功后,可以通過(guò)瀏覽器或者 curl 來(lái)訪問(wèn) http://127.0.0.1:3000 , 查看是否成功返回字符串 [v1] Hello, Kubernetes!。

這里因?yàn)槲冶镜刂挥?Docker CLI,而 docker runtime 是使用 minikube,所以我需要先調(diào)用 minikube ip 來(lái)返回 minikube IP 地址,例如返回了 192.168.59.100,所以我需要訪問(wèn) http://192.168.59.100:3000 來(lái)判斷是否成功返回字符串 [v1] Hello, Kubernetes!。

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

docker push guangzhengli/hellok8s:v1

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

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

相關(guān)文章

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

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

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

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

    Prometheus是一款開源的監(jiān)控和告警工具,它可以收集系統(tǒng)的各種指標(biāo)數(shù)據(jù),如CPU使用率、內(nèi)存使用量等,本文主要介紹了Docker部署Prometheus的實(shí)現(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)入鏡像的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Docker中如何刪除image(鏡像)的方法

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

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

    docker搭建本地私有倉(cāng)庫(kù)的實(shí)現(xiàn)

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

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

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

    docker命令中必須加上sudo的問(wèn)題解決方法

    本文主要介紹了docker命令中必須加上sudo的問(wèn)題解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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的問(wèn)題

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

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

最新評(píng)論