中ドッカーコンテナdocker run
/ docker build
?
ドッカーコンテナ技術は、現在、マイクロ/継続的インテグレーション/第1の選択フィールドの持続的送達を提供しています。DevOpsチームでは、我々は、鏡にパッケージ化環境ドッカーを構築/バックエンド/フロントエンドテストの多様性を必要とし、必要なときに、ジェンキンスはジェンキンスを実行するためにタスク・コンテナを開始するには、これらの画像を使用します。
簡単なメンテナンスのために、このようジェンキンスとしてのCIシステムは、ドッカーの方法を使用して展開されます。
ジェンキンスタスクはいくつかのタスクは、鏡の中にマイクロドッカーサービスを構築する必要があり、その後、ハーバー民間倉庫にプッシュ。
またはすべての画像と私たちジェンキンスマスタージェンキンススレーブ自体をミラーリングすると、任意の追加のビルド環境が含まれていない、あなたは、タスクを実行するタスクを実行する際に、画像が対応する環境が含まれて起動する必要があります。
我々ジェンキンスマスター、ジェンキンススレーブがコンテナ内で実行され、内部でそれらを呼び出すためにどのようにdocker run
コマンドブートイメージは、CI環境にそれが含まれていますか?
内部これらCIミラーでは、ソースコードからコンパイルし、そしてどのようにdocker build
ミラーにパッケージ結果ドッカーをコンパイルし、次に倉庫ネットワークにプッシュするために?
答えは、以下を明らかにしました。
/var/run/docker.sock
ドッキングウィンドウは、クライアント/サーバ・アーキテクチャを採用し、我々は使用docker xxx
我々は、コマンドラインを実行すると、エンジンが実際にこのコマンドにより、クライアントのドッキングウィンドウと通信し、コマンドツール、ちょうどドッキングウィンドウのクライアントを。
私達はがちを通じてドッキングウィンドウ-CEをインストールすると/ yumを、自動的にサービスのsystemdに生成されますので、インストールが完了した後、必要がsudo systemctl enable docker.service
サービスを有効にします。
ドッカーサービスが開始され、見るために、ドッキングウィンドウエンジンで/usr/lib/systemd/system/docker.service
、このような文を参照してくださいします:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
デフォルトでは、ドッカーデーモンはソケットを生成します(/var/run/docker.sock
)ローカルプロセス間通信用のファイル、およびそのためにのみ動作するローカルエンドまたはドッカーAPIの使用時にドッキングウィンドウのクライアントを使用することができます。
UNIXドメインソケットファイルが靴下である、それがアドレス指定され、ファイルシステム(代わりのネットワーク・アドレス)を介してアクセスすることができます。
私たちは、コンテナのドッキングウィンドウのクライアントの内部、およびパラメータを追加することによって、インストールした場合は-v /var/run/docker.sock:/var/run/docker.sock
開催します/var/run/docker.sock
私たちは「ドッカーでドッカー」を達成できるように、容器にボリュームをマウントしたファイルを、コンテナにコマンド]ドッキングウィンドウを使用します。
覚えておいてください、私たちのドッキングウィンドウのコマンドの実際の実装は、ドッキングウィンドウエンジンであり、エンジンがホスト上で実行されています。だから、これは本当に「ドッカーでドッカー」ではありません。
練習
パッケージドッキングウィンドウ-CLI Dockerfileフラグメントでミラーリング:
ENV DOCKER_VER=18.09.7
RUN curl -fSLO https://download.docker.com/linux/static/stable/x86_64/docker-${DOCKER_VER}.tgz \
&& tar xzvf docker-${DOCKER_VER}.tgz --strip 1 \
-C /usr/local/bin docker/docker \
&& rm docker-${DOCKER_VER}.tgz