独自のDockerイメージを作ってKubernetesで使う方法

  •  
 
ホス2021年8月20日 - 17:10 に投稿

この記事では、独自のDockerイメージを作ってKubernetesで使うまでの流れを説明いたします。

試すこと

  • 作業用の端末とは別に、Kubernetesで使い捨てのCentOSを立ち上げておもむろにコマンドを実行できる環境を作ります。
  • プリインストールされていないコマンドを都度yumやdnfでインストールするのは時間がかかるのでプリインストールします。
  • お気に入りのコマンドをプリインストールした自分だけのオリジナルDockerイメージを作ります。
  • Kubernetesの同じクラスタに存在するPodへの疎通確認などの用途に使えるかもしれません。

目次

  1. 事前準備
  2. 通常のCentOSを起動、お気に入りのコマンドの有無確認
  3. Dockerfile、Dockerイメージ作成
  4. Kubernetesの実行ファイル作成
  5. CentOSで自由にコマンド実行
  6. 起動したPodの終了

試した環境の情報

  • 作業端末は macOS Catalina
  • Kubernetes実行環境は、作業端末上にインストール済みの「Docker Desktop for Mac 3.5.2」

手順

事前準備

  1. Docker DesktopでKubernetesを利用できる状態にしておきます。
  2. 今回用のディレクトリを任意の場所に作ります。
    1. mkdir my-centos
    2. cd my-centos

通常のCentOSを起動、お気に入りのコマンドの有無確認

  1. CentOS8の公式Dockerイメージからコンテナを実行します。
    1. ファイルの作成
      • vi centos-pod.yaml
        apiVersion: v1
        kind: Pod
        metadata:
          creationTimestamp: null
          labels:
            run: centos
          name: centos
        spec:
          containers:
          - image: centos:8
            name: centos
            command: ["/bin/sleep", "3650d"]
            resources: {}
          dnsPolicy: ClusterFirst
          restartPolicy: Never
        status: {}
        
    2. コンテナを起動します。
      kubectl apply -f centos-pod.yaml
    3. コンテナが起動したことを確認します。
      kubectl get pods
      • こんな感じです。
        $ kubectl get pods
        NAME                        READY   STATUS    RESTARTS   AGE
        centos                      1/1     Running   0          5s
  2. Podの中に入ります。
    1. kubectl exec -it centos -- /bin/bash
  3. お気に入りのコマンドが存在するか確認します。(今回は例としてdigコマンドを確認)
    1. dig -v
    2. [root@centos /]# dig -v
      bash: dig: command not found
      
    3. この時点で存在した場合はここで終わりです。Podが不要な場合は終了します。
    4. 存在しない場合は続きます。

Dockerfile、Dockerイメージ作成

  1. オリジナルのDockerイメージを作るための「Dockerfile」を作ります。
    • vi Dockerfile
      FROM centos:8
      RUN dnf install -y bind-utils #digコマンドが含まれるツールをイントール
      
  2. DockerfileからDockerイメージをビルドします。
    • docker build --no-cache -t my-centos:latest .
  3. Dockerイメージが作られたことを確認します。
    • docker images
    • こんな感じです。
      MacBookPro:my-centos ipride$ docker images
      REPOSITORY                           TAG                                                     IMAGE ID       CREATED             SIZE
      my-centos                            latest                                                  cb178c3c9c1e   About an hour ago   343MB
      

Kubernetesの実行ファイル作成

  1. KubernetesでPodを実行するためのファイルを作成します。(ファイル名は任意)
    • vi my-centos-pod.yaml
      apiVersion: v1
      kind: Pod
      metadata:
        creationTimestamp: null
        labels:
          run: my-centos
        name: my-centos
      spec:
        containers:
        - image: my-centos:latest
          name: my-centos
          imagePullPolicy: Never
          command: ["/bin/sleep", "3650d"]
          resources: {}
        dnsPolicy: ClusterFirst
        restartPolicy: Never
      status: {}
      
  2. オリジナルのCentOSのPodを起動します。
    • kubectl apply -f my-centos-pod.yaml
  3. オリジナルのCentOSのPodが起動したことを確認します。
    • kubectl get pods
    • こんな感じです
      MacBookPro:my-centos ipride$ kubectl get pods
      NAME                        READY   STATUS    RESTARTS   AGE
      centos                      1/1     Running   0          16m
      my-centos                   1/1     Running   0          16s
      

CentOSで自由にコマンド実行

  1. オリジナルのCentOSのPodに入ります。
    • kubectl exec -it my-centos -- /bin/bash
  2. 先ほど使えなかったお気に入りのコマンドが使えるようになったことを確認します。(例)
    • dig -v
    • こんな感じです
      [root@my-centos /]# dig -v
      DiG 9.11.26-RedHat-9.11.26-4.el8_4
      

起動したPodの終了

  1. 起動したときに使用したファイルと同じディレクトリにいる状態で、以下のコマンドで停止できます。
    • kubectl delete -f my-centos-pod.yaml
    • kubectl delete -f centos-pod.yaml

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。