docker
どうしても古いままの環境をいじらざるを得ない時ありますよね... Dockerfile FROM centos:6 RUN \ sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo &&\ sed -i…
Dockerfileをベストプラクティスに沿って作るとそうなりがち docs.docker.com 理由 0〜1023 までのポートは well known port と呼ばれ、開放にroot権限が必要なため そういう場合に8080を選ぶ理由 8080は、非rootユーザがwebサーバを立てる時の使うポートと…
先に結論 --docker オプションを使う serverless invoke local --docker --function hoge 解説 --docker オプションを使うと、AWS lambda が公式に配信しているDocker でシミュレートされた Lambda 環境 ( lambci/lambda ) をつかって、serverlessをローカル…
dockle って? コンテナイメージのセキュリティチェックツールです。ビルドしたImageを通すと、セキュリティ的に問題がある部分を指摘してくれます github.com 警告 CIS-DI-0008 って? これですね CIS-DI-0008: Remove setuid and setgid permissions in the …
コード例 #!/bin/bash -e exit 1 | echo "a" echo "b" 実行結果 a b -e オプションで、行単位で失敗したら終了するはずなのに、 echo "b" が実行されてしまっている...! 解説 pipeを使う場合、一番右側の処理の戻り値で行の成功/失敗が判定される exit 1 | e…
UNIXドメインソケット 単一マシン上の高効率なプロセス間通信に用いられる機能・インターフェースの一種である UNIXドメインソケット - Wikipedia ファイルシステムを介してプロセス同士の通信を行う仕組み 普通にリバースプロキシするより高速だが、ファイ…
レガシーなシステムをDocker化するときにたまによくやるのでメモ 多分、Aplineでもおんなじだと思う 方法 コードからmakeする ARG IMAGE_MAGICK_VERSION=${好きなパージョン} RUN wget --quiet https://imagemagick.org/download/releases/ImageMagick-$IMAG…
自己学習のためにざっくり作ってみた 個人的には、本番はUnicornでも開発環境ではPumaでいいんじゃないかな...って思っている SQLは合わせたほうが良いと思うけど 前準備 experimentalな機能を使うので環境変数を予め設定しておく .envrc export DOCKER_BUIL…
Alpine Linux で gem install をした時のエラーメッセージから不足しているファイルを見つけて、それを持っているパッケージを探す方法を記します native extension を持っている gem install を失敗する時、こんなエラーメッセージが出ます 例: gem pg イン…
APK is 何? apk = Alpine Linux package management Alpine Linuxのパッケージ管理システム パッケージって何? Linuxが採用しているアプリケーションの配布形態。アプリケーションによっては、正常に動作させるためには「ライブラリ」と呼ぶ別のプログラムを…
Dockerfile best practices によると... Avoid RUN apt-get upgrade and dist-upgrade, as many of the “essential” packages from the parent images cannot upgrade inside an unprivileged container. If a package contained in the parent image is out…
ARGとは build実行時にオプション --build-arg として渡せる可変の値 使いみち 環境毎になにかを変える時に使用する ビルド時に使用する環境変数 entrypoint.sh COPY元 など Dockerfileでの定義方法 ARG hoge="fuga" 解説 上記は、変数 hoge を時環境変数 HO…
前提 dockerfileの CMD や ENTRYPOINT でコマンドを定義する方法は2通りある exec form(推奨) : JSONの配列で定義する ["echo", "${HOGE}"] 直接コマンドが実行される(変数展開が行われない ) shell form : 文字列で定義する "echo ${HOGE}" /bin/sh -c を介…
きちんと理解したら全然意味が異なるものだった ENTRYPOINTとは docker run 時に実行されるコマンドを定義 例 apacheを起動させるコンテナ(オフィシャルじゃないけど、説明に最適だった) の ENTRYPOINT ENTRYPOINT ["/usr/sbin/apache2"] docker run した場…
原因 docker for mac は仮想マシン上で動いているが、その仮想ディスクの容量がいっぱいになると発生 対策 prefarence で仮想ディスクのサイズを変更する 画面上、変更できないように見えるけど、クリックしたら普通に変更できた ただし、今回はディスクリセ…
dockerのディスクのマウント先がループバックデバイスだと遅い ループバックデバイスは特定のファイルをデバイスとみなす仕組み ゲストOSでの書き込み→ループバックデバイスへの書き込み→物理ディスクへの書き込みとなるので、直接物理ディスクに書くより遅…
memory : ハードリミット。ここで指定した以上のメモリを使用しようとするとOOMKillerが走る memory-reservation : ソフトリミット。ホストのメモリに余裕がある時は、これ以上使用することもある 余裕が無いときは、memory_reservation 内にとどめる ECSで…
task definition 以下はインスタンスのcpuinfoとメモリの情報をチェックするtaskのdefinition { "family": "get_fargate_cpu_info", "containerDefinitions": [ { "name": "get_fargate_cpu_info", "image": "#{AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws…
この2つを参考に、ECSを動かしてみた docs.aws.amazon.com docs.aws.amazon.com ゴール Hello World と書かれた index.html を持つ apache サーバをECSで動作させて、ブラウザで動作確認する 手順 DockerImageを作る DockerImageをECRに登録する Task Defini…
Amazon ECSとは Amazon Elastic Container Service (Amazon ECS) Docker コンテナをサポートする拡張性とパフォーマンスに優れたコンテナオーケストレーションサービスです (最近乱立しがちでK8Sに統合が向かうのかどうなのかわからない)コンテナオーケスト…
現象 alpine3.4 だと、postgresql-dev や client が 9.5 系 9.6 系を入れたくて、Dockerfileで /etc/apk/repositories を加工して、alpine3.5系のパッケージを入れるように変更した /etc/apk/repositories http://dl-cdn.alpinelinux.org/alpine/v3.5/main h…
現象 docker-compose を使って、run bin/rake を実行した時に、Could not find rake が発生 (ローカル環境では正しく動作する) $ docker-compose exec web bundle exec bin/rake --version Could not find rake-12.3.0 in any of the sources Run `bundle in…
ビルド docker-compose build # Build or rebuild services 起動、停止 docker-compose up # Create and start containers docker-compose up -d # デーモンとして起動 docker-compose start # サービスを開始 docker-compose restart # サービスを再起動 do…
DBはPostgreSQLで、他に余分なgemを入れなければこんな感じ FROM ruby:2.5.0-alpine COPY Gemfile* /myapp/ WORKDIR /myapp RUN apk upgrade --no-cache && \ apk add --update --no-cache \ postgresql-client \ nodejs \ tzdata && \ apk add --update --n…
今日やること data volume を理解し直す data volume ってなんぞ ボリュームは、Dockerコンテナによって生成され、使用されるデータを永続化するための推奨されるメカニズムです docs.docker.com Dockerコンテナの中のファイル/ディレクトリは、コンテナが終…
これまでのあらすじ 概要を理解して、Imageを作ってコンテナをうごかしてみました kasei-san.hatenablog.com kasei-san.hatenablog.com 今日やること 公式のクイックスタートガイドを元に、ローカルのDockerでRailsを動かしてみる docs.docker.com ワーキン…
Dockerエンジンのインストール OSXならばこちら → Docker Store 無償のcommunity editionと、有償のenterprise edition がある Dockerは、linuxカーネルの機能を使うので、macやwindowsで動かす場合は、小さいLinuxVMを内部で動かしているらしい 色々動かし…
そもそもDockerって何なの? コンテナ型仮想化サービス 仮想化サービスとは? サーバ上に仮想的なサーバを作り出す技術 ホスト型、ハイパーバイザ型、コンテナ型がある ホスト型 汎用的なOS上に専用のアプリを入れて、仮想化を実現 VirtualBox, VMware とか ハ…