はじめに
概要
- ローカルでビルドしたNext.jsコンテナをリモートのDockerで起動したい。
かつ
- リモートでコンテナをビルドしたくない。
- ファイルの転送にクラウドを使いたくない。
という場合の手順をまとめました。
ファイルの転送にクラウドを使いたくない場合は、「Docker Hubを使わない方法」をご覧ください。
環境
ローカル
- Windows 11
- Docker Desktop 4.37.1
- Next.js 15.1.5
リモート
- Windows 11
- Docker Desktop 4.37.1
Docker Hubを使う方法
準備
ローカル・リモートのDocker Desktopを起動する。
ローカルでの作業
1. コンテナからイメージを作成する。
docker commit (コンテナID) (新しいイメージ名):(新しいタグ名)
例
docker commit aaaaa test_image:latest
コンテナIDはDocker Desktopで確認できます。
2. Docker Hubでプライベートリポジトリを作成する。
3. Docker Hubにログインする。
docker login -u (Docker Hubのユーザー名)
例
docker login -u user
この後パスワードを聞かれます。
4. イメージにタグをつける。
docker tag (イメージ名):(タグ名) (Docker Hubのユーザー名)/(プライベートリポジトリ名):(新しいタグ名)
例
docker tag test_image:latest user/private-rep:latest
5. イメージをDocker Hubにプッシュする。
docker push (Docker Hubのユーザー名)/(プライベートリポジトリ名):(タグ名)
例
docker push user/private-rep:latest
6. Docker Hubからログアウトする。(任意)
docker logout
リモートでの作業
1. Docker Hubにログインする。
docker login -u (Docker Hubのユーザー名)
この後パスワードを聞かれます。
2. Docker Hubからイメージをプルする。
docker image pull (Docker Hubのユーザー名)/(イメージ名):(タグ名)
例
docker image pull user/test_image:latest
3. Docker Hubからログアウトする。(任意)
docker logout
4. イメージからコンテナを起動する。
docker run -d -p (外部のポート番号):(コンテナ内のポート番号) --name (新しいコンテナ名) (イメージ名):(タグ名)
例
docker run -d -p 3000:3000 --name test_container test_image:latest
確認
ローカルで
http://(リモートのIPアドレスまたはホスト名):(外部のポート番号)
にアクセスすると、アプリが表示されます。
Docker Hubを使わない方法
準備
ローカル・リモートのDocker Desktopを起動する。
ローカルでの作業
1. コンテナからイメージを作成する。
docker commit (コンテナID) (新しいイメージ名):(新しいタグ名)
例
docker commit aaaaa test_image:latest
コンテナIDはDocker Desktopで確認できます。
2. イメージをtarファイルとしてエクスポートする。
docker save -o (ローカルの保存先のディレクトリパス)/(新しいファイル名).tar (イメージ名):(タグ名)
例
docker save -o /tmp/test_image.tar test_image:latest
3. tarファイルをリモートマシンに転送する。
今回はリモートデスクトップに接続してローカルから手動でコピー&ペーストしましたが、以下のコマンドでも実行できるそうです。
scp (ローカルの保存先のディレクトリパス)/(ファイル名).tar (リモートのユーザー名)@(リモートのIPアドレスまたはホスト名):(リモートの保存先のディレクトリパス)
例
scp /tmp/test_image.tar user@123.456.7.890:/tmp
リモートでの作業
1. tarファイルをイメージとしてインポートする。
docker load -i (リモートの保存先のディレクトリパス)/(ファイル名).tar
例
docker load -i /tmp/test_image.tar
2. イメージからコンテナを起動する。
docker run -d -p (外部のポート番号):(コンテナ内のポート番号) --name (新しいコンテナ名) (イメージ名):(タグ名)
例
docker run -d -p 3000:3000 --name test_container test_image:latest
確認
ローカルで
http://(リモートのIPアドレスまたはホスト名):(外部のポート番号)
にアクセスすると、アプリが表示されます。
参照