0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】コンテナ環境を保存し別のサーバにデプロイし直す方法

Posted at

Dockerを使って開発を行っていると、コンテナ内で作業した内容を他の環境にデプロイしたい場合があります。例えば、あるコンテナで作業したアプリケーションや設定をそのまま別の環境に移動させる必要がある場合です。今回は、Dockerコンテナの状態を保存し、別のサーバにコンテナをデプロイし直す方法について解説します。

目次

  1. コンテナを作成する
  2. コンテナの状態を保存する
  3. 保存したイメージをサーバ内で再デプロイする
  4. 別の環境にデプロイする
  5. まとめ

1. コンテナを作成する

まず、DockerFileを用意します。

# M1 MacのみFROMの記述が必要
FROM --platform=linux/amd64 ubuntu:latest

# RUNコマンドは、コンテナ作成時に自動で実行するコマンドを指定
RUN apt update -y
RUN apt install -y sudo make curl vim iperf3 iproute2 iputils-ping

# fogeというユーザを作成、fogefogeというPWを設定
RUN useradd -m -s /bin/bash foge
RUN echo "foge:fogefoge" | chpasswd

# sudoでroot権限のコマンドを実行できるように指定
RUN gpasswd -a foge sudo

# コンテナを指定したユーザで実行(rootユーザ以外で実行したい)
USER foge

# ワークディレクトリを設定
WORKDIR /home/foge

DockerFileのあるディレクトリで以下のようにイメージを作成します。

docker build . -t ubuntu_image

イメージからmy-ubuntuという名前でコンテナを作成します。

docker run -it -d --name my-ubuntu ubuntu_image

以下のコマンドでコンテナ環境に入ります。

docker exec -it my-ubuntu bash

インストールされているパッケージのリストを確認します。

sudo apt list --installed

現在のコンテナ環境を別のサーバに再デプロイした際、上記のパッケージリストが同一である事を確認し、コンテナ環境の移行が成功したかどうか検証していきます。


2. コンテナの状態を保存する

それでは、コンテナ環境の移行をしてみます。

2.1. Dockerイメージとして保存

docker commitコマンドを使用して、コンテナの状態をイメージとして保存します。

docker commit my-ubuntu my_saved_image:latest

これで、my-ubuntuコンテナの状態がmy_saved_imageという名前のDockerイメージとして保存されます。

保存されたイメージを確認するには、以下のコマンドを使います。

docker images

出力例:

REPOSITORY          TAG       IMAGE ID       CREATED         SIZE
my_saved_image      latest    abcdef123456   1 minute ago    200MB

これで、保存したイメージが確認できるはずです。

2.2. イメージにタグを付ける

もし保存したイメージを特定のバージョンとして管理したい場合、タグを付けることができます。例えば、v1というタグを付ける場合は以下のコマンドを使用します。

docker tag my_saved_image:latest my_saved_image:v1

3. 保存したイメージをサーバ内で再デプロイする

保存したイメージを使って新しいコンテナを作成します。

docker run -it -d --name my-new-ubuntu my_saved_image:latest

以下のコマンドでコンテナ環境に入ります。

docker exec -it my-new-ubuntu bash

インストールされているパッケージのリストを確認します。
最初に作ったコンテナと同一のパッケージがインストールされている事を確認しましょう。

sudo apt list --installed

4. 別の環境にデプロイする

次に、保存したイメージを別の環境にデプロイする方法を見ていきます。

4.1. イメージの保存と転送

1. 保存したイメージをファイルとしてエクスポートするには、docker saveコマンドを使用します。
docker save -o my_saved_image.tar my_saved_image:latest
2. エクスポートしたmy_saved_image.tarファイルを別のサーバに転送します。例えば、scpを使ってファイルを転送できます。
scp my_saved_image.tar user@remote-server:/path/to/destination
3. 別の環境に転送したら、docker loadコマンドを使ってイメージをインポートします。
docker load -i /path/to/destination/my_saved_image.tar

4.2. 別の環境でコンテナを起動

イメージをインポートしたら、あとは通常通りコンテナを起動します。

docker run -it -d --name my-new-container my_saved_image:latest

以下のコマンドでコンテナ環境に入ります。

docker exec -it my-new-container bash

インストールされているパッケージのリストを確認します。
最初に作ったコンテナと同一のパッケージがインストールされている事を確認しましょう。

sudo apt list --installed

5. まとめ

Dockerコンテナの環境を保存し、別のコンテナとしてデプロイし直す手順を紹介しました。具体的には、以下の流れになります。

  1. コンテナの状態をdocker commitで保存
  2. 保存したイメージを使って新しいコンテナを起動
  3. 必要に応じて、docker savedocker loadを使って異なる環境にイメージを移行

この方法を使うことで、異なる環境間で同じ作業環境を再現することができ、デプロイ作業を効率化できます。是非、試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?