最近インストールしましたドッカーデスクトップApple Silicon(Intel以外のARM)を搭載したMacのmacOS Ventura用アプリバージョン4.22.0。複数のコンテナを正常にインポートして実行しました。 1つはMySQLデータベースサーバー用、もう1つはPostgresデータベースサーバー用です。
残念ながら、このサーバーの一部の構成ファイルを編集しようとしたときに、デフォルトのユーティリティが欠落していることに驚きました。扱いにくいシェルとナノメートルテキストエディタ。
単一のコンテナで正常に実行されました。
apt update
apt install nano
これは単一のコンテナでのみ機能します。他の勇気はまだ足りません。ナノメートル編集する。コンテナの目的がお互いを隔離することを考えると、これらの欠如は理解できます。
このユーティリティを次の場所に表示したいと思います。みんな私のDockerデスクトップアプリケーションのコンテナです。
答え1
ドッカー画像の全体的なアイデアは「いいえ」です。方法がないイメージのベースレイヤーを変更するには、そのベースレイヤーを変更してその上にイメージを再構築する必要があります。
ここでのアイデアは、イメージレイヤーが不変なので、どのバージョンのアイテムがあるのか、各ポイントで動作が保証されるアイテムなどを簡単に推論できるということです。
だから、
私が見つけた唯一のアドバイスは、「自分だけのイメージを作りなさい」でした。
システムが実行する必要がある操作を反映します。しかし、実際には考えほど難しくありません。作成する必要があるのは4行です。 (以下の例は意図的に冗長に表現しました!)
nano
「foobar」というイメージがあり、ここにおよびが含まれていることを確認したいとしますzsh
。さて、あなたが指摘したように、イメージがfoobar
ソフトウェアapt
をインストールするために使用されている場合(たとえば、DebianやFedoraなどのDebian派生など)を実行してapt installs -y zsh nano
取得できます。それからやるべきことは、新しい状態に基づいてイメージを作成することだけです。
とても簡単です。次の内容でテキストファイルを作成します。
FROM foobar
# Reminder for yourself that you're the one who built this
LABEL maintainer="[email protected]"
# you get to pick a version, relatively freely.
# If you feel like it works for you as you want, I'd recommend to start using 1.something
LABEL version="0.0.1"
# The "line continuation" \ at the end of each line are important; they
# "swallow" the line break character, otherwise the RUN command will break.
#
# Set the frontend for apt to "Don't ask me any questions, please"==noninteractive;
# and be -q (uiet), answer -y (es) to everything
# and also don't install fancy stuff that you get recommended, let's keep this slim
RUN apt-get update;\
DEBIAN_FRONTEND=noninteractive apt-get install \
--no-install-recommends -q -y \
nano \
vim \
&& \
apt-get clean && apt-get autoclean
「Dockerfile-improved-foobar」として保存して実行します。
docker build -f Dockerfile-improved-foobar -t foobar-with-tools
今実行するとそこにdocker images
表示されますfoobar-with-tools
! dockerhubから自動的に取得された他の画像のように使用できます。