takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Docker コンテナに Google Cloud SDK (gcloud) と Kubernetes (kubectl) をインストール

WindowsGoogle Cloud SDK では Kubernetes (kubectl) が動かないため、Docker コンテナ にインストールしたときの手順メモ

Dockerfile

gcloud を動作させるために Python 2.7 が必要なため、Docker Hub の公式イメージを流用して作成

# gcloud shell
#

FROM python:2.7
MAINTAINER takaya030

RUN apt-get update && apt-get install -y openssh-server sudo
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# create login user
RUN useradd -d /home/gcp -m -s /bin/bash gcp
RUN echo gcp:****gcp | chpasswd
RUN echo 'gcp ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

イメージのビルド

$ docker build -t takaya030/gcloud .

コンテナの起動

$ docker run -d -it -p 2222:22 --hostname gcsh --name gcp_gcsh_1 takaya030/gcloud

コンテナへログイン

$ ssh -p 2222 gcp@192.168.99.100

※パスワードは '****gcp'

Google Cloud SDK のインストール

$ curl https://sdk.cloud.google.com | bash

今回は /home/gcp/google-cloud-sdk/ にインストールした。
インストール後、直ちにコマンドのパスを有効にしたい場合は以下のコマンドを入力

$ source .bashrc

GCP のユーザー情報の設定

$ gcloud init

kubectl のインストール

$ gcloud components update kubectl
$ which kubectl
/home/gcp/google-cloud-sdk/bin/kubectl