内部有 minikube 的 docker 镜像

问题描述 投票:0回答:3

我正在尝试创建一个安装了 minikube 的 docker 镜像。

我使用 openjdk:8 图像作为基础尝试了几个步骤:

FROM openjdk:8

RUN apt-get install -y apt-transport-https
RUN curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
RUN touch /etc/apt/sources.list.d/kubernetes.list
RUN echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee -a /etc/apt/sources.list.d/kubernetes.list
RUN apt-get update
RUN apt-get install -y kubectl


RUN apt-get install sudo -y
ENV MINIKUBE_VERSION v0.31.0
RUN curl -Lo minikube https://github.com/kubernetes/minikube/releases/download/${MINIKUBE_VERSION}/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
RUN mkdir -p root/.kube
RUN touch root/.kube/config

但我似乎无法启动 minikube,似乎我缺少依赖项,或者可能在另一个 docker 中运行 minikube 不是最好的解决方案。

有什么想法吗?

docker minikube
3个回答
3
投票

我自己对这个问题很感兴趣,因为我想在不改变任何环境的情况下通过在线 Kubernetes 课程。我所拥有的只是安装了 docker。

首先熟悉一下docker-in-docker概念,因为minikube也会使用docker,我也用过这个技巧

Dockerfile

FROM    ubuntu:22.04

# installing docker
RUN     apt-get -y update
RUN     apt-get -y install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release

RUN     mkdir -p /etc/apt/keyrings
RUN     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

RUN     echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

RUN     apt-get -y update
RUN     apt-get -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# installing kubectl
#RUN     apt-get install -y ca-certificates curl
RUN     curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
RUN     echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list

RUN     apt-get update
RUN     apt-get install -y kubectl


# installing other dependencies
RUN     apt-get install conntrack

# installing minikube
RUN     curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
        && chmod +x minikube

RUN     mkdir -p /usr/local/bin/
RUN     install minikube /usr/local/bin/

CMD     tail -F /dev/null

tail将在启动后保持运行

现在构建图像

docker build -t minikube .

docker-compose.yml

version: '2'

services:
  minikube:
    image: minikube:latest
    container_name: test-kuber
    restart: always
    network_mode: host
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock

restart是需要的,因为minikube会在某个时刻重新启动

network_mode 允许访问主机本地主机,否则 minikube 将无法连接到它创建的容器

volumes 是 docker-in-docker 技巧

现在运行开始:

docker-compose up -d

登录容器:

docker exec -it test-kuber bash

现在你可以启动 minikube 了:

minikube start --driver=docker --force
从根目录使用 minikube 需要

force(这对我来说没问题,但你可能需要一些额外的工作来避免它)

完成后,从容器内运行:

minikube delete

退出容器并运行:

docker-compose down

1
投票

https://kubernetes.io/docs/tasks/tools/install-minikube/

注意:Minikube 还支持 --vm-driver=none 选项,该选项在主机上而不是在虚拟机中运行 Kubernetes 组件。使用此驱动程序需要 Docker 和 Linux 环境,但不需要虚拟机管理程序。


0
投票

感谢 Ash Lander,我能够创建包含 minikube 一切设置的镜像

https://hub.docker.com/repository/docker/kemsekov/minikube-1.31/general

安装了兼容版本的 kube 依赖项

您只需要创建 docker-compose 文件,启动它,附加到容器并创建集群。

© www.soinside.com 2019 - 2024. All rights reserved.