🤖

🤖

:gijutsu_burogu:

Docker

GoからDocker上のElasticsearchに接続する際にネットワークのSniffingでハマった

問題 Docker で Elasticsearch を起動します。 services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.4.0 environment: - discovery.type=single-node ports: - 9200:9200 - 9300:9300 以下の Elasticsearch クライアントライ…

CI上でのマルチステージビルドにおけるキャッシュ活用の銀の弾丸を見つけたかもしれない(Buildx, BuildKit)

銀の弾丸 以下でキャッシュ活用、ビルド、Push をよしなに行ってくれます。 $ docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS # Docker Hub や ECR にログイン $ export DOCKER_CLI_EXPERIMENTAL=enabled # Buildxを有効にする $ docker buildx create…

Dockerfileを書かずにBuildpacksで圧倒的に軽量なDockerイメージを作成する(539MB->245MB)

はじめに 2018 年 10 月に Cloud Native Buildpacks は Cloud Native Computing Foundation (CNCF)に Sandbox として受け入れられました。 CNCF には Kubernetes, Prometheus, Envoy, Fluentd など有名プロジェクトも多く受け入れられています。 Buildpacks …

Docker で立てた CI で Docker Build する -Docker in Docker と /var/run/docker.sock

はじめに CI では毎回まっさらな環境でテストやビルドができます。 これには、多くは Docker が用いられています。 さらには、Docker で実現されたまっさらな環境でも Docker ビルドなど Docker を利用できます。 前提知識: Docker クライアントと dockerd d…

キャッシュのためにDockerビルドで中間イメージをタグ付けしレジストリにPushする

WHY: なぜ中間イメージをタグ付けするのか 今では Docker イメージの軽量化のためにマルチステージビルドは欠かせません。 ローカルでの実行では問題ありませんが、CI 環境などの dockerd が毎度変わる Docker In Docker(dind)では問題が起こります。 最終イ…

Dockerイメージ分析ツール「dive」を利用してDockerイメージを軽量化する

はじめに Docker イメージサイズは小さければ小さいほど、Push と Pull の高速化につながり嬉しいです。 docker historyによってイメージレイヤーごとのサイズは分かりますが、どのレイヤーのどのファイルのサイズが大きいかは分かりません。 $ docker histo…

GitHub Actionsを例にCI環境でのマルチステージビルドのキャッシュの活用について🐳

はじめに 以前、CI 環境での Docker ビルドのキャッシュについて記事を書きました。 kotaroooo0-dev.hatenablog.com 前回の記事のようにマルチステージビルドでない場合は、1 Dockerfile 1 Cache で問題ありませんでした。 しかし、今では Docker イメージの…

docker-composeでdepends_onしても起動順を制御するだけで稼働順は制御されない問題

本記事での言葉の定義 起動: 動き始めること(例: PC の電源ボタンを押すこと) 稼働: 働きはじめること(例: PC が利用可能になること) はじめに 以下の Redis と MySQL を利用するアプリケーションの docker-compose を考えます。 version: "3" services: app…

俺のコンテナ - libcontainerでコンテナを作ってみた

はじめに 仮想化は使いたいアプリケーションだけでなく OS も含めてまるごと動かす仕組みです。 これでは、ゲスト OS とホスト OS が同じ Linux であればカーネルなどを重複してロードすることになり無駄にメモリを消費してしまいます。 OS のカーネルはホス…

GitHub ActionsでのDockerビルドをキャッシュで高速化する

はじめに GitHub Actions 上での Docker イメージのビルド高速化について情報が少なかったので自分なりに調査してみました。 Jenkins のように自分でホストするのではなく、GitHub Actions や CircleCI ではステートレスにジョブが行われます。 そのため、ロ…

Dockerfileを正しく書けるように指摘してくれる静的解析ツール「hadolint」

サイボウズ社の Docker 研修資料を見ていると Dockerfile の静的解析ツールが紹介されており、どれくらい解析するのか興味が湧いたので試してみました。 hadolint エラーを事前に検知してくれたり、よりよい Dockerfile の書き方を指摘してくれます。 Haskel…

Dockerイメージのビルドで使うキャッシュの種類 - レイヤーキャッシュ、BuildKitの--mount=type=cache

はじめに Docker イメージをビルドしていく上で、イメージサイズ軽量化や並列実行はどこの環境でビルドするか気にしないで行うことができました。 しかし、キャッシュの仕組みは環境によっても異なるなど複雑です。 本記事では、キャッシュの種類について紹…

DockerイメージのビルドをBuildKitで並列実行し高速化する

なぜ、ビルドを早くする デプロイ時間の短縮 AutoScaling 等でのインスタンスの追加時間の短縮 CI のビルド時間が短縮 どう、ビルドを早くする 並列性を上げる ビルドキャッシュを効かせる 並列性 本記事では、並列性のみに触れる。 BuildKit を使用する Doc…

Go製CLIツールを使うDockerイメージをダイエットしてみた

なぜ Docker イメージを軽くするのか Docker イメージのダウンロードが早くなる Docker イメージのアップロードが早くなる CI やプロダクションなど各環境へのイメージの配布が効率的に行える ホストのディスク容量を圧迫しない どう Docker イメージを軽く…

1コマンドでQiitaからはてなブログへ記事を移行するできるようにDockerイメージを作った

tl;dr 事前に行うこと 対象のはてなブログの記事入力モードを Markdown に変更 Qiita の記事のタイトルが[Docker]Qiitaからはてなブログへ記事を移行のように[]から始まるものをだと yaml のパースの関係で上手くいかないので【】等に置換 環境変数が必要で…

GCP+DockerでHTTPSな静的ページを公開する

この記事はQiitaの記事をエクスポートしたものです。内容が古くなっている可能性があります。 概要 なにかかっこいいのでポートフォリオサイトが欲しかったというのと,GCPとDockerまともに触ったことがなかったのでこういう風に公開しました. これはポート…