Amazon Linux 2 の Dockerイメージから開発環境を作り Visual Studio Codeで接続してみる Amazon Linux 2のDockerイメージから開発環境として使うコンテナを作り、Visual Studio Codeで接続してみました。 コンテナは以下をインストール or 可能としてみました。 AWS CLIをインストールする。かつクレデンシャルはローカルのものをコンテナ内でも使えるようにする。 (開発言語として)Go言語をインストールする。 ローカルマシンとコンテナで共有できるフォルダを作成する。 以下、今回作成した「docker-compose.yml」と「Dockerfile」について書いていきたいと思います。 作成したもの ローカル環境について 本作業はMacで行いました。docker-composeとDockerがインストールされているものとしま
本記事ではDockerにおける秘密情報を (I) コンテナを起動する際に使用する秘密情報 と (II) イメージをビルドする際に必要となる秘密情報 に分類して考え、特に後者を安全に取り扱うための方法について整理します。 コンテナ起動時の秘密情報とイメージビルド時の秘密情報 (I) コンテナを起動する際に使用する秘密情報としては、例えば mysql イメージ の環境変数 MYSQL_ROOT_PASSWORD があります。コンテナの起動時にこの環境変数を与えると MySQL の root ユーザーのパスワードがその値になるというものです。 あるいは、例えば Laravel などのWebアプリケーションで、バックエンドDBへの接続情報を含んだ設定ファイルを Docker ホスト側に用意しておき、コンテナ起動時にその設定ファイルをマウントするというようなケースも考えられます。 いずれにしても、こ
前回(第1回)は、Dockerコンテナに対応するアプリケーションを開発・実行するために、Docker Composeというツールを使うのが便利ということで、例としてDocker Composeを使ってWordPressをコマンド1つで実行する方法を紹介しました。WordPressのような、しっかりとしたアプリケーション以外でもDocker Composeが使える場面があります。 今回は、Docker Composeを使ってウェブサーバ(Apache httpd)を実行し、コンテンツを表示する例を見ていきましょう。 なぜDocker Composeなのか? 単純にウェブサーバとして実行するアプリケーションであれば、Dockerだけで何ら困らないでしょう。例えば、Apache httpdサーバを実行するには、次のようにしてコンテナを実行できます。 docker run -d httpd しかし
運用管理が楽になり、クラウドとの親和性も高い――エンジニアならば避けては通れない「コンテナ」技術のメリットは、既に多くのエンジニアが肌で感じているものだろう。コンテナアプリケーションを動かすまでには、コンテナイメージを作成し、レジストリにアップロードし、そのイメージをデプロイ先にダウンロードし、コンテナを実行するというプロセスを踏む。コンテナアプリケーションの構成はDockerfileなどのテキストで表現できることもあり、構成管理は可読性も高い。 では、そこに“脅威”はないのだろうか? コンテナ技術が普及期に入ったこともあり、昨今では“コンテナセキュリティ”に関しても注目が集まっている。しかしコンテナセキュリティが指すポイントについてはさまざまな意見があり、「いったいどこを守るべきなのか」「どこに脅威があるのか」がよく分からないというエンジニアも少なくないだろう。 そこで今回、トレンドマイ
Happy New Year! 年末、年始があっという間に終わり、明日は成人の日。 来週からコーディングのオンラインクラスを受けることになった。4−6ヶ月になりそうであるが、無事乗り切れるのか、少々不安も。javascriptを習得するコースなため、最終的にnode.jsのサーバーサイドでのコーディングもできるようになるまでの知識を得られるよう頑張ろう。node.jsの環境構築に不可欠ともいえるdocker。 今回は、10 best practices to containerize Node.js web applications with Docker の翻訳記事のご紹介です。 今回は、特に翻訳に苦労しました。読みにくい部分もあると思いますが、どうぞ最後までお付き合いください。 Dockerでnode.jsウェブアプリケーションをコンテナ化するための10のベストプラクティス Liran
本記事は、2022年5月に開催されたTechFeed Conference 2022のセッション書き起こし記事「コンテナビルド最新事情 2022版(inductor) — TechFeed Conference 2022講演より」を転載したものです。オリジナルはTechFeedをご覧ください。 それではこれから、私@_inductor_が「コンテナビルド最新事情」ということでお話をしていきます。 今日は主に4つの話をしていきます。ちょっと駆け足になってしまいますが、コンテナビルド高速化に向けた4つの機能およびポイントについてお話しします。 今回お話すること Dockerfileの新しい記法 まず最初に、Dockerfileに新しい記法がいくつか増えています。それを実装しているのは BuildKitと呼ばれるDocker発のオープンソースのソフトウェアがベースになっていて、Dockerf
こんにちは。Tably よういちろう(@yoichiro)です。 皆さんは普段GitHubをお使いでしょうか?お使いの方は、GitHub Actionsを使ってCI/CDしていますでしょうか? GitHub Actionsを使うことで、Pull Requestの作成や更新、あるブランチへのマージといったタイミングで、コードのフォーマットを整えたり、テストを走らせたり、本番環境にデプロイしたり、一連の作業が終わったことをチャットに通知したり・・・といったことを自動的に行うことができます。GitHubにはGitHub Marketplaceというアクションが公開されているマーケットプレースがあります。やりたいことがあった時に、一般的なものであればそこで見つけることができるでしょう。 ものすごい数のアクションがMarketplaceにて公開されていますが、たまたま僕が行いたかった動作をしてくれる
Linux Kernel Teaching¶ This is a collection of lectures and labs Linux kernel topics. The lectures focus on theoretical and Linux kernel exploration. The labs focus on device drivers topics and they resemble "howto" style documentation. Each topic has two parts: a walk-through the topic which contains an overview, the main abstractions, simple examples and pointers to APIs a hands-on part which co
Ruby向けのDockerイメージで使いがちな環境変数について整理する。 GEM_HOME RubyGemsに対して、どのディレクトリにGemをインストールするかを指定する環境変数。例えば gem install foo を実行すると、この環境変数で指定したディレクトリにfoo gemがインストールされる。 Dockerでありがちな作戦として、/gem のような適当なパスにデータボリュームをマウントしておいて、そこにGemを永続化させておくというのがある。このときGEM_HOMEを /gem に指定しておくと、gem install bundler を実行したときそこにBundlerがインストールされ、更に /gem/bin/bundle も用意される。 BUNDLE_PATH Bundlerに対して、どのディレクトリにGemをインストールするかを指定する環境変数。例えば bundle i
ダークウェブ(.onionドメイン)にアクセスする場合、ブラウザはTorを使う必要がありますが、docker内でTorを建ててプロキシとして使えば、どのブラウザ、またはCURL、pythonスクリプト等でもアクセスできちゃいます。 ワンライナーはこちらです。 networksetup -setsocksfirewallproxy Wi-fi localhost 9150 && networksetup -setsocksfirewallproxystate Wi-fi on && cd $(mktemp -d) && echo -e "FROM alpine:3.12\nRUN apk add tor" > Dockerfile && docker build . -t torproxy && docker run -p 9150:9150 torproxy sh -c "chown -R
今回は Docker で使える「ヘルスチェック機能」を試す.Release Note を読むと,機能としては Docker 1.12 から使えるらしく,3年前からあったなんて...!仕組みとしては,Docker デーモンからコンテナに指定したコマンドを定期的に実行する. Dockerfile 構文 「ヘルスチェック機能」を使う場合,まず Dockerfile に HEALTHCHECK を設定する.実行するコマンド以外に以下のオプションも設定できる.注意点として,--retries 以外は秒数を指定するため,表記は 5s のように単位も付ける. --interval=DURATION (default: 30s) --timeout=DURATION (default: 30s) --start-period=DURATION (default: 0s) --retries=N (defa
概要 空腹状態から回復する為に飯を食っても腹が出る人類の不思議について考えていたら夜でした。2021年03月13日 の15:50 から16:50 までの一時間で技育祭というイベントでコンテナの入門講義を行った。以前から事前に情報が共有できない入門講義は罪深いとは思っている。事前知識のある有無や特定のコンテキストへの理解など参加者のスタートラインを確認できないからで講義時間の関係上それらに一線を引いてここからあそこまでの入門講義だと思い込んで講義を行わなければならない。これは地味にシンドイ。講義する側になると予習復習は大事というのが身に染みます。 講義の感想にたまにこんな声が聞こえる。 コンテナ技術以前の前提知識が必要だと思う こういうことを聞くとオジサンなので彼らの為になるようにXXといういい本があるよ!!! インフラの勉強をするにはこういう名著がある。もちろん、基本的な知識としてネットワ
Introduction to Dockerizing for Production Improve your DevOps skills: learn an iterative process for Dockerizing your code. Get your free ebook Using Alpine can make Python Docker builds 50× slower by Itamar Turner-Trauring Last updated 21 Mar 2023, originally created 29 Jan 2020 When you’re choosing a base image for your Docker image, Alpine Linux is often recommended. Using Alpine, you’re told,
Docker Init: Initialize Dockerfiles and Compose files with a single CLI command Docker has revolutionized the way developers build, package, and deploy their applications. Docker containers provide a lightweight, portable, and consistent runtime environment that can run on any infrastructure. And now, the Docker team has developed docker init, a new command-line interface (CLI) command introduced
Dockerの性能を最大限に引き出すためには、Dockerfileの記述を最適化し、ビルド後のイメージの容量をできるだけ小さくすることが大切です。さまざまなテクニックがDockerfileのベストプラクティス集などにまとめられるなど、多くのエンジニアの関心を集めているこの最適化問題について、エンジニアのヴァムシ・アトゥーリさんが「適切にchmodを利用することでコンテナイメージの容量を35%削減した」というブログ記事を投稿し、エンジニアが集うニュースサイト「Hacker News」で話題になっています。 `COPY --chmod` reduced the size of my container image by 35% https://blog.vamc19.dev/posts/dockerfile-copy-chmod/ `COPY –chmod` reduced the size
distrolessは、Googleが提供している、本当に必要な依存のみが含まれているcontainer imageです。そこにはaptはおろかshellも含まれておらず、非常にサイズの小さいimageとなっています。余計なプログラムが含まれていないことは attack surfaceの縮小にも繋がり、コンテナのセキュリティについての事業を展開しているSysdig社が公開しているDockerfileのベストプラクティスとしてもdistroless imageを使うことが推奨されています。 Dockerfileのベストプラクティス Top 20 | Sysdig 軽量Dockerイメージに安易にAlpineを使うのはやめたほうがいいという話 - inductor’s blog また先日、inductorさんがこのようなブログ記事を書き話題になりました。この記事からdistroless ima
tl; dr Dockerfile の heredoc 機能の中で凝ったことをやるときはコマンド群の最初に set -e とか書くのが無難そう 近年 Dockerfile 内で heredoc 記法が使えるようになったことが知られていて、 www.docker.com 割と凝ったことができる機能で、シンプルには以下のように RUN にずらずら書くときシュッと書けて便利、というのがわかりやすいと思う。 思うんだけど、こういうふうに heredoc の中でなんかミスってしまったときに何が起こるかというと、 # syntax=docker/dockerfile:1.3-labs FROM debian RUN <<EOF apt-get install packagewhichdoesnotexists ls EOF こういう感じで docker build は成功扱いになってしまう。 % do
どうも品質管理部のキムラリョーです。 Selenium & Pythonを利用した自動テストプロジェクトの再構築をDockerを使って簡単にしたい、という話です。 これまでの自動テスト 実行までに必要な手順 1. リポジトリクローン 2. Pythonインストール 3. pipで必要なパッケージをインストール 4. Dockerインストール 5. 自動テスト実行 ターミナルからmainを実行すると、Selenium Gridのコンテナを起動した後にtestautoが実行されます。testautoはSelenium Gridに接続してブラウザを操作しながらテストを行います。 Selenium Gridだから起動時などの設定で様々な形に切り替える事ができます。Nodeを増やしたら並列も可能だし、ヘッドレスも使えるし、気軽にブラウザの設定内容を変えられます。 このプロジェクトは作成者である自分だ
Learn how to prevent security issues and optimize containerized applications by applying a quick set of Dockerfile best practices in your image builds. If you are familiar with containerized applications and microservices, you might have realized that your services might be micro; but detecting vulnerabilities, investigating security issues, and reporting and fixing them after the deployment is ma
大きくは外部ストレージサービス利用と、アプリケーションにバンドルしてしまう方式と2つにわかれます。バンドルはデータだけ更新ができないデメリットはありますが、お手軽です。Lambdaはレイヤーを使えば実行プログラムに対して後から追加とかできますが、容量制限が厳しめです。 オブジェクトストレージは比較的お手軽ですが、読み込みしたいライブラリがローカルのファイルシステム前提の場合は使えません。サーバーレスの方式によっては、一度ローカルのファイルシステムに書き出してから利用とかも可能ではありますが、Cloud Runでは8GB(ただし、おそらくtmpfsで書けば書くほどメモリを消費)、Lambdaでは500MBと容量に制限があります。 より巨大な学習済みデータを扱う場合はマネージドNFSサービス系のものを使うのが最終形でしょう。ファイルのサイズ制限もほぼ限界値ですし、ローカルファイルになるのでどん
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く