今時のアプリ開発において、コンテナは避けて通れないものになっています。そして数多くあるコンテナ実行環境の中でも、デファクトスタンダードと言えるのがDockerです。そんなDockerのイメージですが、皆さんは正しくビルドできていますか? そのコンテナは無駄に太っていませんか? 効率よく最短時間でビルドできていますか? セキュリティは大丈夫ですか? 今回はDockerfileの書き方をテーマに、「今さら聞けない」Docker入門をお届けします。
はじめに WSL2(Windows Subsystem for Linux 2)は、Microsoft Windows上でLinuxカーネルを直接実行できるようにする機能です。 この記事ではWSL2環境にDockerを導入しGPUを用いた機械学習環境を構築する手順を紹介します。 構築イメージは以下の図の通りです。NvidiaGPUを搭載したマシンにWSL2環境を構築します。Dockerを用いてコンテナを用意し、CUDAは各コンテナ内のCUDA Toolkitを用いて利用します。 今回開発するPCのスペックは以下の通りです。 Windows 11 Windows version: 22H2 GPU:NVIDIA Geforce RTX 3060 12GB 設定 1. WSL2を有効化 デフォルトではWSL2環境が無効化されている可能性があるので、始めに有効化しておきましょう。 「コントロール
最初に3行でまとめ AWS CLIは便利です。しかし起動が遅いので、Goで実装された高速な(ただし機能は少ない)代替品を作りました。awslim といいます リリースバイナリは無駄に大きいので、必要な機能だけを組み込んだビルドを簡単にできるようにしてあります。ビルドして使うのがお勧めです どうぞご利用下さい github.com 以下はこれに至るまでの経緯とか、実装や使い方の話とかです。長いです。 作成の経緯 AWSの各種サービスにアクセスするための AWS CLI は、スクリプトやコマンドラインから処理を自動化するために大変便利なツールです。AWSでサーバーサイドの開発、運用している人であれば、ほぼ全員がお世話になっているんじゃないかと思います。 しかし、AWS CLI (コマンド名aws) には「起動が重い」という問題があるなとずっと思っていました。具体的には、aws --versio
はじめに AWS Lambdaを使ってデプロイするときに、 Dockerイメージを使って、デプロイしたいケースがありました。 すでに、動いているLambdaをLambda Dockerへ変更する際に、 つまずきポイントがあったので、備忘録として、残しておきます Lambdaでコンテナイメージを利用とは? Lambdaには、通常のLambda(ソースコードのみを記述するタイプ)と Dockerイメージを利用するパターンが存在する ※Dockerイメージは、ECRから参照し、Lambda上で実行が出来る なぜDockerイメージを使うのか? 通常のLambdaとLambda Dockerには、仕様の一部に違う部分が存在している 今回、Lambda Dockerを利用したいと考えたのは、 通常のLambdaよりも、大きいパッケージを展開できる為 ●Lambda 50 MB (圧縮、直接アップロー
コンテナイメージなのにブート可能な新技術による「Image mode for Red Hat Enterprise Linux」、Red Hatが発表。レジストリなどのコンテナ関連ツールがそのまま利用可能 Dockerコンテナで使われるコンテナイメージは、そもそもOSのカーネルなどが含まれていないためそれ単体で実行することはできず、コンテナに対応したOSの上にデプロイすることで実行されます。 このコンテナイメージのフォーマットは業界標準の「OCIコンテナ」(Open Container Initiativeコンテナ)として標準化されていますが、このOCIコンテナのフォーマットを守りつつ、ベアメタルサーバ上でブート可能な「ブータブルコンテナイメージ」の開発が進められています。 ブータブルコンテナイメージとは? ブータブルコンテナイメージは、カーネルやデーモンなどの単独で実行可能なOSとしての
はじめに VSCode + Python + Poetry + Docker(docker-compose)でdev-containerを作成して開発を行っていました。 Dockerを勉強し、イメージの軽量化に関する記事を読んでいると、自分が使っているコンテナイメージのサイズが気になりました。 docker images > REPOSITORY TAG IMAGE ID CREATED SIZE > dev-container latest a9b8e3df9087 2.31GB 2.31GB!? サーバとしてアプリを動かしていないのにここまで大きいなんて… というわけで勉強も兼ねて、イメージの軽量化に取り組みました。 イメージが軽量であるメリット ストレージの節約 これは言わずもがなだと思います。 限られたリソースを有効に使うことができます。 ビルド時間の短縮 Dockerは環境を作っ
はじめに PythonのDockerfileを作成する際、ネット上で適切な情報が見つからず、試行錯誤することがあります。そこで、ここでまとめてみます。 完成品 # 開発用ステージ FROM python:3.11-bullseye AS developer ENV PYTHONUNBUFFERED=1 WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends \ bash=5.1-2+deb11u1 \ && apt-get -y clean \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt COPY . . # ビルド用ス
どうも GitHub Actions 上で Docker ビルドを行うと時間がかかるなぁと感じていました。 かなり軽量の Go の Web アプリケーションを Docker イメージにしてプッシュするプロセスなのですが、全体で 3 分ほどかかっています。 今回はその速度改善を行ったので、得た知見を記事にしたいと思います。 最終的に、ケース次第では以下のような結果を出すことができました。 ※ケース = go のソースコードのほんの一部を変更してワークフローを実行する。 go.mod など依存関係に変化はない。 go build: 60秒 → 1秒 docker/build-push-action ステップ: 2分30秒 → 30秒 ワークフロー: 3分 → 1分 前提 go build は Dockerfile のステップで行っており、イメージとして以下のような内容になっています。 FROM
マイクロソフトは、日本時間5月22日未明から開催中のイベント「Microsoft Build 2024」で、GitHub Copilotの新機能「GitHub Copilot extensions」を発表しました。 GitHub Copilot extensionsは専門知識を持つCopilot GitHub Copilotは、プログラマはVisual Studio Codeなどのコードエディタ上やチャット欄でAIと対話し、プログラミングに関する質問への回答やコードの生成などをAIが行ってくれる機能です。 GitHub Copilot extensionsは、このCopilotの能力をサードパーティなどがそれぞれのソフトウェアやサービスの専門家へと拡張できるようにし、プラグインとしてCopilotに組み込み可能にしたものです。 拡張されたCopilotの例として、マイクロソフトが提供する「
php-fpm の挙動を確認するために発行されるシステムコールを簡単に確認できる Docker Compose 環境を作りました。 github.com システムコール strace-php-fpm strace オプション php-fpm が発行するシステムコール例 ini ファイルの探索 nginx からの FastCGI リクエスト PHP ファイルの読み込み さいごに 参考 システムコール システムコールは、php-fpm のようなユーザプログラムが、ファイル操作やネットワーク通信、プロセス制御のようなカーネルが提供する機能を利用する仕組みです。PHP コードは PHP(ここでは php-fpm)で実行する必要があるので、php-fpm が発行するシステムコールを確認することで php-fpm や PHP コードがどのように動作しているかを知る手掛かりになります。 システムコールを
対象者 Docker使いたいけどよくわからない Docker使い始めたけどコマンド言われるがままに打っていてよくわかってない コマンドと動作を図示で理解したい こんな人の理解の一助になれば幸いです。 (前提条件: docker version 26.0.2) Dockerコマンドを可視化してみた 勝手にローカルのPCをmacにしているのはご愛嬌です ※2024/5/16 9時訂正版の画像に差し替え コメントで間違いを指摘していただきありがとうございます🙇 細かいオプションなどは一旦無視してライフサイクルの部分を抜き出してみました。 Docker imageの操作 dockerの肝となるコンテナは、imageから生成します。 そのimageは、 docker hubからpullしてくる dockerfileからbuildする この2択で生成します。 コマンドは、 など、 docker i
あらすじ docker-compose.yml でトップレベルの version 要素を指定していると、 WARN[0000] (...)/docker-compose.yml: `version` is obsolete と表示される。インターネットを見ていくと version は指定しなくて良い、消したらいい、という記事がたくさん出てくるし、たしかに公式のドキュメントにも obsolete と書かれている Version and name top-level elements | Docker Docs。 Version top-level element (obsolete) The top-level version property is defined by the Compose Specification for backward compatibility. It is
Docker社は同社の公式ドキュメント「Docker Docs」に生成AIのチャットボットを組み込み、多言語での質問と回答を含むインテリジェントな対応が可能になったことを明らかにしました。 チャットボットに対して質問することが可能 Dockerのドキュメントは、様々な製品やサービスの概要からインストール、仕様などを解説する1000ページ以上のコンテンツで構成されています。 一般にこれらの技術的なドキュメントから知りたい情報を探すには、ドキュメント字体が備えるナビゲーションメニューなどをたどるか、Googleなどの検索エンジンかドキュメントに搭載された検索機能などを利用することになります。 今回、Docker社はこの公式ドキュメントに、技術関連の質問に対応した生成AIサービスのKabap.aiを組み込みました。 Kapa.aiのチャットボットはDockerの公式ドキュメントを情報源として使用
Docker、BuildKitでのWindowsコンテナの実験的対応を開始。WindowsのPowerShellでビルドが可能に Docker社は、最新のBuildKit v0.13.0で実験的にWindowsコンテナのサポートを開始したことを明らかにしました。 BuildKitはDockerのコンテナイメージをビルドする機能を提供するソフトウェアです。Docker Engine 23以後、Linux環境でデフォルトのビルドエンジンとなっています。 しかしこれまでWindowsコンテナは十分にサポートされていませんでした。 今回のWindowsサポートにより、WindowsのPowerShellコマンドラインで、BuildKitのコマンドを利用してWindowsコンテナのコンテナイメージをビルド作業が可能になります。 具体的には、Windows 11、Windows Server 2019
みなさん、お久しぶりです。A7です。ここ数か月いろいろと忙しくてなかなか記事を書けてませんでした。 松尾研LLM講座の記事もそのうちだすのでお待ちください そして今もまだ忙しいので、今回の記事もまたぱっとまとめます。笑 自己紹介 データサイエンティストを目指して日々勉強している、慶應義塾大学大学院理工学研究科1年生(2024.05.01時点) 取得資格、コンペ優勝経験など、リアルタイムの情報は👇👇👇をみてね X: @A7_data←普段はXで活動しています。ありがたいことに、フォロワーは6500人を超えました😌 プロフィールページ👇👇👇 X👇👇👇 背景 Kaggleやりたい!ってなってた。 Kaggleはデータサイエンティストなら知らない人はいない、世界一のデータサイエンスコンペティションプラットフォーム。 世界の第一線で働くデータサイエンティストの方も多く参加されてお
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く