開発マシンでDockerイメージを構築し、それをサーバーにデプロイする場合は、Dockerレジストリを使用できますが、Dockerには、イメージをファイルに保存して別のサーバーにロードするためのツールもあります。
コンテナレジストリは必要ありません
通常、コンテナーのビルド(イメージと呼ばれる)をリモートサーバーに転送するには、Dockerコンテナーレジストリを使用します。これは断然最善の方法です。これは単一の権限であり、複数のサーバーに更新を簡単に配布できます。これには、コンテナを公開する必要もありません。 GoogleのGCRやAWSのECSなど、優れたプライベートコンテナレジストリがたくさんあります。 DockerHubはプライベートリポジトリもサポートしています。単にプライバシーが心配な場合は、プライベートレジストリに切り替えて、docker push
を引き続き使用してください およびdocker pull
。
ただし、昔ながらの方法でそれを実行しようとしている人のために、Docker CLIには、画像をファイルに保存し、それらをリモートサーバーにロードするためのツールがいくつか含まれています。
画像を保存するには、docker save
を使用できます 、出力ファイルを指定してから、画像名とタグを指定します。
docker save -o ./savedimage imagename:tag
タグを指定しない場合、Dockerはすべてのタグをパッケージ化します。
これにより、画像のコピーがシリアル化され、出力ファイルの下に保存されます。画像はtarfileとして保存されます。 tar.gz
として保存する場合 、-o
は省略できます フラグを立てて出力をgzip
にパイプします :
docker save imagename:tag | gzip > savedimage.tar.gz
次に、このファイルとscp
を取得できます またはターゲットサーバーへのFTPコピー。そこに到達したら、docker load
を使用できます 再度インポートするには:
docker load -i savedimage
これにより、docker build . -t imagename
。 docker container run
を使用してローカルで作成されたイメージと同じように使用できます :
docker container run imagename