この記事では、独自のDockerイメージを作ってKubernetesで使うまでの流れを説明いたします。
試すこと
- 作業用の端末とは別に、Kubernetesで使い捨てのCentOSを立ち上げておもむろにコマンドを実行できる環境を作ります。
- プリインストールされていないコマンドを都度yumやdnfでインストールするのは時間がかかるのでプリインストールします。
- お気に入りのコマンドをプリインストールした自分だけのオリジナルDockerイメージを作ります。
- Kubernetesの同じクラスタに存在するPodへの疎通確認などの用途に使えるかもしれません。
目次
- 事前準備
- 通常のCentOSを起動、お気に入りのコマンドの有無確認
- Dockerfile、Dockerイメージ作成
- Kubernetesの実行ファイル作成
- CentOSで自由にコマンド実行
- 起動したPodの終了
試した環境の情報
- 作業端末は macOS Catalina
- Kubernetes実行環境は、作業端末上にインストール済みの「Docker Desktop for Mac 3.5.2」
手順
事前準備
- Docker DesktopでKubernetesを利用できる状態にしておきます。
- 今回用のディレクトリを任意の場所に作ります。
-
mkdir my-centos
-
cd my-centos
-
通常のCentOSを起動、お気に入りのコマンドの有無確認
- CentOS8の公式Dockerイメージからコンテナを実行します。
- ファイルの作成
-
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: {}
-
- コンテナを起動します。
kubectl apply -f centos-pod.yaml
- コンテナが起動したことを確認します。
kubectl get pods
- こんな感じです。
$ kubectl get pods NAME READY STATUS RESTARTS AGE centos 1/1 Running 0 5s
- こんな感じです。
- ファイルの作成
- Podの中に入ります。
-
kubectl exec -it centos -- /bin/bash
-
- お気に入りのコマンドが存在するか確認します。(今回は例としてdigコマンドを確認)
-
dig -v
-
[root@centos /]# dig -v bash: dig: command not found
- この時点で存在した場合はここで終わりです。Podが不要な場合は終了します。
- 存在しない場合は続きます。
-
Dockerfile、Dockerイメージ作成
- オリジナルのDockerイメージを作るための「Dockerfile」を作ります。
-
vi Dockerfile
FROM centos:8 RUN dnf install -y bind-utils #digコマンドが含まれるツールをイントール
-
- DockerfileからDockerイメージをビルドします。
-
docker build --no-cache -t my-centos:latest .
-
- 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の実行ファイル作成
- 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: {}
-
- オリジナルのCentOSのPodを起動します。
-
kubectl apply -f my-centos-pod.yaml
-
- オリジナルの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で自由にコマンド実行
- オリジナルのCentOSのPodに入ります。
-
kubectl exec -it my-centos -- /bin/bash
-
- 先ほど使えなかったお気に入りのコマンドが使えるようになったことを確認します。(例)
-
dig -v
- こんな感じです
[root@my-centos /]# dig -v DiG 9.11.26-RedHat-9.11.26-4.el8_4
-
起動したPodの終了
- 起動したときに使用したファイルと同じディレクトリにいる状態で、以下のコマンドで停止できます。
-
kubectl delete -f my-centos-pod.yaml
-
kubectl delete -f centos-pod.yaml
-
- 閲覧数 5694
コメントを追加