はじめに みなさんはDockerfileを書いていますか? 近年はAIによる支援でDockerfileをスクラッチで書く機会が減っていると考えられます。 しかしながら、AIに書かせる場合でも良い書き方を知っていることで、その後の修正が容易になります。 この記事では、Node.jsアプリケーションのDockerfileを作成する際に、私ならこのように書くという提案をします。 作成するDockerfileとディレクトリ構造 初めに、完成形のDockerfileとディレクトリ構造を示します。 以降のセクションで実装のポイントを解説していきます。 実行可能なサンプルコードはGitHubで公開しているので、必要に応じてこちらも参照してください。Dockerfile 各種バージョンは記事執筆時点での最新版です。 # syntax=docker/dockerfile:1.20.0 FROM node:

こんにちは.今回は,uv, ruff, devcontainer, Claude Code, Cursorなどのモダンなツールを使ったPythonの開発環境テンプレートを作成したので,その内容を紹介します. テンプレートは以下のリポジトリで公開しています. テンプレートの特徴・構成本テンプレートは,シンプルで自由度の高いテンプレートを目指すため,あまり多くのツールを導入しないように心がけています.多くのツールを導入すると,学習コストも高くなるためです. uv:Rust製の高速なPythonの仮想環境・パッケージ管理ツール ruff:Rust製の高速なFormatter,Linter pytest: テストフレームワーク pre-commit: コミット前のFormat,Lintによるコード品質の担保 devcontainer: 統一された開発環境の提供Docker, Docke

$docker compose watch app $docker compose exec app bash $ root@393b1996df7c:/app# uv run hello Bytecode compiled 1 file in 39ms # Hello World 前書き 以前、uv onDockerをやっているという記事を投稿しました。 この時点では、「使ってみた程度」のレベルで投稿していたのですが、定期的にアクセスが来ています。今見ると色々修正したい部分があるので新しく書き直すことにしました。 ※本記事ではuvとは何か、uvコマンドの使い方は解説しません。GitHubのドキュメント貼るので読んでみてください。Dockerfile 次は、開発用コンテナの設定です。(のちに本番に有効な設定を紹介します) FROM ghcr.io/astral-sh/uv:pyt

Docker ビルド職人の朝は早いーー 毎日コンテナイメージを山ほどビルドしては捨てている皆様、おはようございます。 ビルドの速度はそのまま CI にかかる時間だったりするので、短縮には余念のないことと思います。 レイヤのキャッシュやマルチステージビルドといった基本テクニックについて、ご存じない方は以下の記事がお勧めです。 future-architect.github.io この記事では、良いDockerfile をさらに活用できる、かもしれないdockerbuildx bake について紹介します。 bake の紹介の前に、私が抱えていた問題を説明します。 目下のプロジェクトではKubernetes 上で多数のマイクロサービスを動作させています。 マイクロサービス群はモノリポ(monorepo)上の共通のフレームワークやライブラリを用いて効率的に開発されています。 そのため、全
はじめにDockerをよく使う方なら避けては通れない道、Dockerコンテナのセキュリティについてまとめると同時に、Dockerfileのベストプラクティスに焦点を当てていこうと思います!DockerのセキュリティとはDockerのセキュリティとは、Dockerコンテナのビルド、ランタイム、オーケストレーションに関する側面を指します。 これには、Dockerベースイメージのセキュリティ対策、ユーザー権限の管理、Dockerデーモンの設定、コンテナのCPU制御など、ランタイムにおけるセキュリティ対策が含まれます。 さらに、大規模なDockerコンテナのオーケストレーションに関する課題にも対応する必要があります。 では実際にどのように対応していくのか、10項目のベストプラクティスを通して、具体的な対策を学んでいきましょう!Dockerのセキュリティに関する10項目のベストプラクティス

最近はお客さんとの勉強会でDockerのドキュメントをつまみ食いして読むというのをやっていますが、改めて最新版を読んでみて、いろいろ思考が整理されました。2020年の20.10のマルチステージビルドの導入で大きく変わったのですが、それ以前の資料もweb上には多数あり「マルチステージビルドがよくわからない」という人も見かけるので過去の情報のアンラーニングに使っていただけるように改めて整理していきます。仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編で触れた内容もありますが改めてそちらに含む内容も含めて書き直しています。本エントリーの執筆には@tk0miya氏から多大なフィードバックをいただきました。ありがとうございます。 基本的なメンタルモデル現代的な使い方を見ていくために「Dockerを使ってビルドする」というのはどのようなものか考えを整

はじめに本稿では「コンテナを作る方法はDocker 標準 (containerd + runc) だけじゃないのは分かった、では何を使えば良いのか?」という疑問について、低レベルコンテナランタイムに焦点を絞り、答えを追い求めた結果を書き記します。 この記事は以下の内容で構成されています。 主要なコンテナランタイムの特色のまとめ過去に行われた、コンテナランタイムの性能比較結果のまとめ独自に行った、runc と Nabla Containers のアプリケーション動作パフォーマンスの比較 コンテナランタイムの概要については以下を参照してください。 1. コンテナランタイムの概要 - このアプリ、 gVisor 上でも動きますか? 目次 runcgVisor (runsc)Kata containersNabla containers (runnc)パフォーマンス比較コンテナライフサイクルコ

最近実際に開発現場にコンテナを導入してきた経験から、公式ドキュメントに記載されているベストプラクティスに実際どうなんだということを言ってみようと思います。公式に書いてあることを間違ってると指摘という意図はありません 発言は個人の見解に基づくものであり、所属組織を代表するものではありません。2023/12/3更新: 燃えかけてるのでタイトルを変えました。 補足: こちらの環境は下記を想定しています。Java CICD/本番環境イントラネット内に整備 WF開発 マルチステージ・ビルドを使う マルチステージビルドの目的 公式ドキュメントには、下記のように記載があります。 マルチステージ・ビルド は、中間レイヤとイメージの数を減らすのに苦労しなくても、最終イメージの容量を大幅に減少できます。 つまり、最終イメージの容量を減らすことが目的であって、その一つの手段としてマルチステージビルドを進めて

A talk atKubernetes Novice Tokyo #10

章立て はじめにDocker・Container型仮想化とはDocker一強時代終焉の兆し Container技術関連史 様々なContainer Runtime おわりに 1. はじめに Containerを使うならDocker、という常識が崩れつつある。軽量な仮想環境であるContainerは、開発からリリース後もすでに欠かせないツールであるため、エンジニアは避けて通れない。Container実行ツール(Container Runtime)として挙げられるのがほぼDocker一択であり、それで十分と思われていたのだが、Dockerの脆弱性や消費リソースなどの問題、Kubernetes(K8s)の登場による影響、containerdやcri-o等の他のContainer Runtimeの登場により状況が劇的に変化している。本記事では、これからContainerを利用したい人や再度情報

https://speakerdeck.com/ktock/dockerkaracontainerdhefalseyi-xing背景:Kubernetes 1.24は組み込み機能としてのDocker対応を打ち切る2014年に公開された初期のKubernetesはDockerにのみ対応していましたが、2016年のKubernetes 1.5では Container Runtime Interface (CRI) と呼ばれる共通インターフェースが導入され、 CRIに対応した任意のランタイムが利用可能になりました。以来、様々なランタイムが開発されてきましたが、2022年現在では containerd と CRI-O の 2つが主流です。 CRIが導入されてからも、Kubernetesに組み込まれているDocker対応機能(dockershim)が広く使われていましたが、2022年4月リリース予

Javaアドベントカレンダーにエントリーした記事になります。Javaのイメージを作る上で、どのDockerイメージをベースに選べばいいのか、というのを軽く調べ始めたら、選択肢がたくさんでてきたので、ちょっと突っ込んで調べてみました。 以前、仕事でPythonコンテナをデプロイする人向けのDockerfile (1): オールマイティ編で書いたOS名とかは今回は紹介しませんので、busterとかalpineとかWindowsservercoreってなによ? というお話はそちらの記事を参照してください。一点アップデートがあるのは、Debian 11がリリースされて、イメージとしてbullseyeというのが追加された点ですね。あとはfocal=Ubuntu 20.04LTSというのを覚えてもらえれば。 JDK周りのニュースOracle JDKが無償配布をやめて、無償利用としてはOpenJDKを

最近では、AWSなどのクラウドプラットフォームや、Dockerがプロジェクトに取り入れられることが多くなりました。それに応じて、“それらを使えなければならない”という空気がただよっています。たしかに、AWSやDockerは便利ですが、「必須のもの」なのでしょうか。そんな疑問を技術書人気著者が解説します。 今回のサマリ そもそも「AWS」「Docker」とは? 新技術(AWS・Docker)との付き合い方 やっぱり、サーバーなどの基礎知識が大切 【筆者】小笠原種高さん(ニャゴロウ先生)技術ライター、イラストレーター。システム開発のかたわら、雑誌や書籍などで、データベースやサーバー、マネジメントについて執筆。図を多く用いた易しい解説に定評がある。主な著書に『なぜ?がわかるデータベース』(翔泳社)、『これからはじめるMySQL入門』『図解即戦力Amazon Web Serviceのしくみと

あらすじ 公衆WiFiに繋いだ状態でいつものようにdocker container run -p 8080:80nginx のような感じでDockerコンテナを動かしていたら、外部からリクエストを受信した。 ファイアウォールを設定し、外部からのアクセスを拒否しているはずなのになぜアクセスできたんだ... 環境Docker desktop formac withapple silicon 4.21.0 何が起きた?Dockerはデフォルトの設定では-p 8080:80のようにポートマッピングするとファイアウォールの設定を書き換え、外部からそのポートへのアクセスを許可するようになっている。 その結果LAN内の他のPCから対象ポートにアクセス出来てしまう。 ちなみにこれはDocker公式からも注意が出ている。 Publishing container ports is insecur

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く