添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
暴躁的猴子  ·  我的ubuntu ...·  14 小时前    · 
坏坏的路灯  ·  Dockerfile に apt, ...·  4 天前    · 
低调的水龙头  ·  Installing Certbot on ...·  1 周前    · 
谈吐大方的毛巾  ·  Linux | LidarBlog.com·  1 周前    · 
爱跑步的鸡蛋  ·  ubuntu安装samba失败 ...·  1 周前    · 
酷酷的毛巾  ·  es时间格式化查询 Java ...·  2 月前    · 
含蓄的铁板烧  ·  微盟云 - 文档中心·  3 月前    · 
至今单身的仙人球  ·  南方周末·  5 月前    · 
SCRIPT USAGE AND DIFFERENCES FROM OTHER APT TOOLS
       The apt(8) commandline is designed as an end-user tool and it may change behavior between versions. While it tries not to break backward compatibility this is not guaranteed either if a change seems beneficial for interactive use.
       All features of apt(8) are available in dedicated APT tools like apt-get(8) and apt-cache(8) as well.  apt(8) just changes the default value of some options (see apt.conf(5) and specifically the Binary scope). So you should prefer using these commands (potentially with some additional options enabled) in your scripts as they keep backward compatibility as much as possible.

実際は下記のように --no-install-recommends オプションを使って必要最小限のインストールを一度に複数行うのがいいでしょう。また、 apt update apt install の行をまとめることで古いパッケージ情報のキャッシュ利用を避けることができます。最後に不要なパッケージマネージャーのキャッシュを削除して容量を削減します。 これらのコマンドをまとめることでレイヤ数を必要最小限にし、さらに容量を削減できます。

RUN apt-get update \
 && apt-get install -y --no-install-recommends \
    cowsay \
    nyancat \
 && apt-get -y clean \
 && rm -rf /var/lib/apt/lists/*

一連のコマンド後に && でさらにコマンドを連結することができますが、依存関係のあるライブラリのインストールや、 ln コマンドによるシンボリックリンク作成など、雑に連結するとエラーになるものがありますので注意してください。 最初はあまり連結せずに RUN で書いて動作を確認し、その後行末から連結して動作確認するのがおすすめです。 但し、状況によっては後述のマルチステージビルドの方法を検討しましょう。

source コマンドが使用できない

Ubuntu の /bin/sh は bash でなく Dash が使われており、Dash には source コマンドが無いためです。 source の代わりに . (ドット)を使用します。 なお、下記の例は相対パスで .bash_profile を指定していますが、絶対パスで指定したほうが意図しないパスでの実行を防げるため無難だと思います。

RUN source .bash_profile  # 実行エラー
RUN . .bash_profile

ビルド環境と実行環境を分ける(マルチステージビルド)

複数の FROM AS を使ってビルド環境と実行環境のイメージを分離すること ( マルチステージビルド ) で、実行環境のみを保存することによりイメージ容量を縮小できます。イメージ内でビルドしたライブラリを使う場合に有効です。
また、ビルド環境のレイヤ数やサイズは最終的に生成される実行環境のイメージに影響しないため && を極限まで使ってレイヤ数を減らす必要がなくなり、複雑さを低減できます。

FROM image_A AS build-native-env
# .. 開発環境で特定ライブラリ, 実行プログラムをビルド ..
FROM image_B
COPY --from=build-native-env /projectdir
# image_A でビルドしたデータをコピーして実行環境イメージを作成

cowsay のインストールは表示上正常に完了したように見えても、実行できず、 which cowsay の結果も返ってこない..牛さんの姿を拝むことは果たしてできるのか!?
以上、Buzy の「鯨」を聴きつつお送りしました。

============================
◆◇FIXERってどんな会社?◇◆
気になるあなたに、ぜひ参加していただきたい企業説明会を実施しています!
採用担当 が毎回、小さな疑問も大きな不安もじっくりお答えしています♪
聞きづらい質問もどんとこーい!な企業説明会です!
FIXER企業説明会はこちらからどうぞ! ◆◇FIXERでは今、新卒・中途問わず仲間を募集しています!◇◆
ぜひ求人も覗いてみてください!↓↓↓
FIXERの求人はこちらからどうぞ
============================

azblob://2024/08/26/eyecatch/pexels-pixabay-60504.jpg
個人でMicrosoft Entra ID P2ライセンスを購入してみた
2024/08/26
Azure