0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Alibaba CloudでDocker in Docker (DinD)を実行する

Last updated at Posted at 2025-03-12

本記事はこちらのブログを参考にしています。
翻訳にはアリババクラウドのModelStudio(Qwen)を使用しております。

Docker in Docker (DinD) の実行方法: ECS と ACK 上での設定

Docker を Docker 内で実行することは、CI/CD パイプライン、テスト環境、およびコンテナオーケストレーションにおいて役立ちます。また、セキュリティやリソース制限に関する構成にどのような変更が必要かについても見ていきます。DinD は ECS と ACK の両方で実行できますが、それぞれの方法を完全に説明します。

方法 1: ECS インスタンスの作成

  • 適切なリージョンとゾーンを選択します。
  • インスタンスタイプを選択します(ニーズに応じて十分なリソースがあることを確認してください)。
  • オペレーティングシステムを選択します(Ubuntu または CentOS が推奨されます)。
  • SSH アクセスを許可するためのセキュリティグループ設定を構成します(ポート 22)。
  • インスタンスを起動します。

方法 2: ECS インスタンスへの接続

SSH でインスタンスに接続します:bash
ssh root@

方法 3: Docker のインストール

パッケージインデックスを更新します:bash
sudo apt-get update
Docker をインストールします(Ubuntu の場合):bash
sudo apt-get install -y docker.io
Docker を開始します:bash
sudo systemctl start docker
sudo systemctl enable docker
Docker インストールを確認します:bash
docker --version

方法 4: Docker in Docker (DinD) の実行

Docker がインストールされた Docker コンテナを実行します。次のコマンドを使用してください:bash
docker run --privileged --name dind -d docker:latest
DinD が正常に動作するために --privileged フラグが必要です。

DinD コンテナにアクセスします:bash
docker exec -it dind sh_disabled
DinD コンテナ内で、これで Docker コマンドを実行できます。例:bash
docker run hello-world

ステップ 5: ネットワークの設定(オプション)

DinD コンテナ内で実行中の Docker コンテナに外部からアクセスする必要がある場合は、適切にネットワーク設定を行う必要があります。では、これを Kubernetes サービス上で行ってみましょう。


方法 1: ACK クラスターの作成

  • Alibaba Cloud コンソールにログインします。
  • Container Service for Kubernetes に移動します。
  • 「クラスターを作成」をクリックします。
  • 適切な構成(リージョン、クラスタータイプなど)を選択します。
  • 要件に基づいてインスタンスタイプとノード数を選択します。
  • 必要に応じてネットワークその他の設定を構成します。
  • 「作成」をクリックしてクラスターを起動します。

方法 2: kubectl のインストール

  • Kubernetes クラスターを管理するためにローカルマシンに kubectl をインストールします。
  • インストール手順については公式の Kubernetes ドキュメントをご覧ください。

方法 3: kubectl の設定

  • クラスターを作成した後、Alibaba Cloud コンソールから kubeconfig ファイルをダウンロードします。
  • ローカルの kubectl をこの構成を使用するようにセットアップします:bash
    export KUBECONFIG=path/to/your/kubeconfig

方法 4: Kubernetes 上で Docker in Docker をデプロイ

  • Kubernetes デプロイメント YAML ファイルを作成します(例:dind-deployment.yaml):yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: dind
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: dind
    template:
    metadata:
    labels:
    app: dind
    spec:
    containers:
    - name: dind
    image: docker:latest
    securityContext:
    privileged: true
    command: [dockerd-entrypoint.sh_disabled]
    args: [--host=unix:///var/run/docker.sock]
    volumeMounts:
    - name: docker-sock
    mountPath: /var/run/docker.sock
    volumes:
    - name: docker-sock
    emptyDir: {}
    デプロイメントを適用します:bash
    kubectl apply -f dind-deployment.yaml
    DinD Pod にアクセスします:
  • Pod 名を取得します:bash
    kubectl get pods
  • Pod にアクセスします:bash
    kubectl exec -it -- sh_disabled

方法 5: Docker コマンドの実行

Pod 内で、これで Docker コマンドを実行できます。

Docker コンテナを監視するための最適なツール


免責事項: 本記事で述べられている見解は参考用であり、必ずしも Alibaba Cloud の公式見解を表すものではありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?