簡體   English   中英

在 Docker 容器中安裝 Kubernetes

[英]Installing Kubernetes in Docker container

我想使用Kubeflow來檢查它,看看它是否適合我的項目。 我想將它作為開發服務器在本地部署,以便我可以查看它,但我的計算機上有 Windows,而 Kubeflow 僅適用於 Linux。 我不允許雙啟動這台計算機,我可以安裝虛擬機,但我認為使用 docker 會更容易,哦,天哪,我錯了。 所以,問題是,我想在 docker 容器中安裝 Kubernetes,現在這是我寫的 Dockerfile:

# Docker file with local deployment of Kubeflow
FROM ubuntu:18.04

ENV USER=Joao
ENV PASSWORD=Password
ENV WK_DIR=/home/${USER} 

# Setup Ubuntu
RUN apt-get update -y
RUN apt-get install -y conntrack sudo wget

RUN useradd -rm -d /home/${USER} -s /bin/bash -g root -G sudo -u 1001 -p ${PASSWORD} ${USER}
WORKDIR ${WK_DIR}

# Installing Docker CE
RUN apt-get install -y apt-transport-https ca-certificates curl software-properties-common
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
RUN add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
RUN apt-get update -y
RUN apt-get install -y docker-ce docker-ce-cli containerd.io

# Installing Kubectl
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN mv ./kubectl /usr/local/bin/kubectl

# Installing Minikube
RUN curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
RUN install minikube-linux-amd64 /usr/local/bin/minikube


ENV PATH="${PATH}:${WK_DIR}"
COPY start.sh start.sh
CMD sh start.sh

有了這個,只是為了使部署更容易,我還有一個 docker-compose.yaml 看起來像這樣:

services:
  kf-local:
    build: .
    volumes:
      - path/to/folder:/usr/kubeflow
    privileged: true

start.sh 看起來像這樣:

service docker start

minikube start \
     --extra-config=apiserver.service-account-issuer=api \
     --extra-config=apiserver.service-account-signing-key-file=/var/lib/minikube/certs/apiserver.key \
     --extra-config=apiserver.service-account-api-audiences=api \
     --driver=docker

問題是,每當我嘗試運行它時,我都會收到錯誤消息:

X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges.

我已經嘗試創建一個用戶並從那里運行它,但是我無法運行 sudo,知道如何在 Docker 容器上安裝 Kubernetes 嗎?

正如您認為在使用 VM 的情況下是正確的,並且很容易對其進行測試。

您可以使用 Linux 基礎容器進行開發測試,而不是在 docker 上設置 Kubernetes。

有 linux 容器可用名稱為 LXC 容器。 Docker 是一種應用程序容器,而簡單來說,LXC 就像用於本地開發測試的 VM。 您可以將這些東西安裝到而不是 docker 設置應用程序內部圖像。

閱讀有關 lxc 的一些詳細信息: https://medium.com/@harsh.manvar111/lxc-vs-docker-lxc-101-bd49db95933a

您也可以在 windows 上運行它並在以下位置試用: https://linuxcontainers.org/

如果您已閱讀Kubeflow的文檔,還有一個選項multipass

Multipass 在 Windows、Mac 或 Linux 系統上創建 Linux 虛擬機。 VM 包含完整的 Ubuntu 操作系統,然后可用於部署 Kubernetes 和 Kubeflow。

了解有關多通道的更多信息: https://multipass.run/#install

docker 組和 minikube 目錄上的用戶權限不足會導致此錯誤(“X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root permissions.")。

您可以通過將您的用戶添加到 docker 組並設置 minikube 配置文件目錄的權限來修復該錯誤(在以下兩個命令中將 $USER 更改為您的用戶名):

sudo usermod -aG docker $USER && newgrp docker

sudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikube

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM