Dockerコンテナにアプリケーションを永久にインストールできますか?

Dockerコンテナにアプリケーションを永久にインストールできますか?

私はdockerを使用していますが、実行するたびにcatを使用してsource.listを編集し、sudoとnanoをインストールし、dockerを実行するたびに別のエントリをインストールするために少しの労力を必要とするタスクに重要なアプリケーションをインストールする必要がありますします。

Dockerコンテナを保存して後で再度ログインする方法はありますか?

私はUbuntu 16を実行し、Debian 10でDockerを実行しています。

ベストアンサー1

Dockerfile

これが「正常な」方法です。デフォルトでは、以下をDockerfile含むファイル(通常は名前付き)を作成します。

# The image we will start with:
FROM ubuntu:16.04

# Install packages, by running a command
RUN apt update && apt install package1 package2

# You can also copy you own script/config files
COPY startup.sh /startup.sh

次に、イメージを「コンパイル」します(Dockerfileとスクリプトを含むディレクトリが現在のディレクトリであると仮定します)。

docker build -t my_image .

その後、画像を使用します。

docker run my_image

Dockerfilesの完全な構文は次のとおりです。ここ

このアプローチの利点:

  • Dockerfileは作業コンテナのための「レシピ」であり、追加のメモなどはありません。これが文書化され、保守可能なコンテナを取得する方法です。
  • 基本イメージの新しいバージョンに簡単にアップグレードできます。
  • 画像を共有したり別のコンピュータに転送したりするには、dockerファイルとコンテナにコピーされたいくつかのファイルを転送するだけです。

そしてdocker commit

現在のコンテナコンテンツからイメージを作成することもできます。

docker commit <containerId> <imageName>

問題は、画像が機能すると、その中に何があるのか​​実際には分からず、簡単に転送できないということです(かなり大きなファイルです)。

メモ:

  • USERを変更する前はコンテナのルートなので、通常は必要ありません。sudo
  • nanoまた、コンテナの外部でファイルを編集し、Dockerfileを使用してコピーする必要はありません。容器は使い捨て品です。
  • 独自のイメージを使用すると、再インストールする必要がないため、ネットワークがなくてもコンテナがはるかに高速に起動します。
  • コンテナは、バックアップや転送が困難な使い捨てアイテムです。

おすすめ記事