LoginSignup
9
15

More than 3 years have passed since last update.

docker-composeで作成したコンテナを別サーバーに移行させる手順のメモ

Posted at

はじめに

docker-composeを使用して作成したコンテナを別サーバへ移行させます。

永続化としてホストのフォルダをマウントしている事を想定しています。
永続化にDocker volumeを使用している場合は次の記事などを参照してください。
https://qiita.com/ritukiii/items/c724f09fe66fedf2618b
(本記事の参照元でもあります)

ホスト環境は移行元、移行先共に
AWS上のUbuntu18.04です

準備

済んでいる場合は不要です

docker networkを使用している場合は移行先の環境に同名のnetworkを作成しておく。

# 例
# 移行先で
docker network create -d bridge --gateway=192.168.0.1 --subnet=192.168.0.0/16 <ネットワーク名>

移行元から移行先へssh接続できるようにしておく。

# 例
# 移行元で

# なければ.sshフォルダを作成してパーミッションを変更
mkdir ~/.ssh
chmod 700 ~/.ssh

# 接続先にログインするための秘密鍵を配置してパーミッションを変更
~/.ssh/<秘密鍵名>
chmod 600 ~/.ssh/<秘密鍵名>

# ~/.ssh/configに接続情報を追加
vi ~/.ssh/config
----------<追加>----------
Host <移行先サーバ名>
  User <接続ユーザ名>
  Port 22
  HostName <IPアドレス>
  IdentityFile ~/.ssh/<秘密鍵名>
--------------------------

# ~/.ssh/configを新規作成した場合はパーミッションを変更
chmod 600 ~/.ssh/config

本題

コンテナイメージの移行

移行元で実行中のコンテナイメージをtarファイルとして保存し、移行先にscpで転送します。
移行先でtarファイルからdockerイメージをロードします。

移行元での作業

コンテナをコミットして最新の状態をコンテナイメージに適用。

docker commit <コンテナ名> <イメージ名>

コンテナイメージをファイルとして書き出す。

docker save <イメージ名> > <イメージファイル名.tar>

書き出したファイルを移行先に転送

scp <イメージファイル名.tar> <移行先サーバ名>:<イメージファイル名.tar>

移行先での作業

転送したファイルをコンテナイメージとしてロードする

docker load < <イメージファイル名.tar>

ロード結果の確認

docker images
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
<イメージ名>                                     latest              xxxxxxxxxxxx        About an hour ago   3.02GB

コンポーズファイルの移行

tar圧縮してscpするなどして転送先に移行

# 例
# 移行元での作業

# docker-compose.ymlファイルなどが格納されたフォルダをtarで圧縮
tar zcvf <コンポーズファイルなど一式.tar.bz2> <コンポーズファイルのフォルダ>

# scpを使用して移行先に転送
scp <コンポーズファイルなど一式.tar.bz2> <移行先サーバ名>:<コンポーズファイルなど一式.tar.bz2>
# 例
# 移行先での作業
tar zxvf <コンポーズファイルなど一式.tar.bz2>

永続化用フォルダの移行

コンポーズファイルと同様に転送し、オーナー/権限を転送元を参考に調整する

# -Rオプションを付けてサブフォルダ以下も変更
chown dockeruser:dockergroup <永続化用フォルダ> -R
chmod 元のパーミッション <永続化用フォルダ> -R

コンテナイメージからコンテナを起動

移行したdocker-compose.ymlと同じフォルダに移動し、コンテナを起動する。
もし永続化用フォルダのパスなど、環境に変更がある場合はdocker-compose.ymlを編集しておく。

docker-compose up -d
9
15
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
9
15