lxcficon.jpg DockerコンテナへLXCFコンテナからの変換

元のページに戻る

DockerコンテナへLXCFコンテナからの変換

LXCFを使うと簡単にDocker用のコンテナを作成することができます。
通常はDockerでは、dockerfileでコンテナを作りますが、そのFROM行に書かなければならないコンテナをゼロからつくりましょう。

LXCFのseparateモードとjointモードの2つのモードで作る方法があります。

1. separateモードのコンテナからDockerコンテナを作る方法

1) VMにUbuntuやFedoraなど最小限でインストールします。
2) LXCFをインストールしてください。
3) dockerをインストールして動くようにしておいてください。
4) LXCFでコンテナを作ります。-sオプションを付けるとseparateモードのコンテナが作成されます。

  # lxcf sysgen -s コンテナ名

5) コンテナにloginして、不要なパッケージやファイルを消します。コンテナ内ではdockerもlxcfも不要なのでアンインストールします。 また、登録されている不要なユーザを消したり、/etc/hostsや/etc/resolve.confなど設定ファイルでも不要な記述は消しましょう。
6) コンテナからlogoutしてから、停止させます。
  # lxcf  stop  コンテナ名

7) dockerコンテナに変換します。
  # lxcf  export-docker  コンテナ名
 コンテナ名  is generating ...
 3844de2c5693a7c5c2d6c5072496f4add1146b7d9760ccdb42dcf9e06bda9250
 コンテナ名  is generated as docker container

8) dockerコンテナを確認します。
  # docker images
 REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
 「コンテナ名」        latest              3844de2c5693        2 minutes ago       4638.4 MB

9) dockerコンテナを動かしてみます。

 # docker  run  -it  コンテナ名  /bin/bash

 # 

無事、動いたでしょうか?
dockerではsystemd, upstartなどから起動してサーバーにすることは少ないでしょう。
上記のようにbash、sshやアプリを直接指定して起動するのがdockerの流儀ですね。
ここで作成したdockerコンテナは、dockerfileのFROM行で指定して利用することも可能です。

2. jointモードのコンテナからDockerコンテナを作る方法

ほぼ、separateモードと同じですが、/usrをホストと共用するところが異なります。

1) VMにUbuntuやFedoraなど最小限でインストールします。
2) LXCFをインストールしてください。
3) dockerをインストールして動くようにしておいてください。
4) LXCFでコンテナを作ります。-jオプションを付けるとjointモードのコンテナが作成されます。

  # lxcf sysgen -j コンテナ名

5) コンテナにloginして、不要なファイルを消します。 また、登録されている不要なユーザを消したり、/etc/hostsや/etc/resolve.confなど設定ファイルでも不要な記述は消しましょう。
jointモードでは/usrをホストと共用しているためにパッケージの削除はできないことに注意してください。
6) コンテナからlogoutしてから、停止させます。
  # lxcf  stop  コンテナ名

7) dockerコンテナに変換します。
  # lxcf  export-docker  コンテナ名
 コンテナ名  is generating ...
 3844de2c5693a7c5c2d6c5072496f4add1146b7d9760ccdb42dcf9e06bda9250
 コンテナ名  is generated as docker container

8) dockerコンテナを確認します。
  # docker images
 REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
 「コンテナ名」        latest              3844de2c5693        2 minutes ago       438.4 MB

/usrがないため、大きさが1/10になっています。 

9) dockerコンテナを動かしてみます。

 # docker  run  -it  -v /usr コンテナ名  /bin/bash

 # 

必ず "-v /usr"を付けてください。

jointモードのLXCFのコンテナから変換したdockerコンテナはコンパクトにできるのですが、 /usrをホストと共用するので他のサーバに移動させることはできません。

元のページに戻る