ラベル LXC の投稿を表示しています。 すべての投稿を表示
ラベル LXC の投稿を表示しています。 すべての投稿を表示

2017年1月8日日曜日

LXC ホストのディレクトリをコンテナでマウント

環境

Ubuntu 16.04 LTS (Xenial) Server

LXC ホストの /some/where/dir ディレクトリを lxc_ubuntu コンテナの /mnt/test ディレクトリにマウントします。

コンテナで /mnt/test マウントポイントを作成

$ sudo mkdir /mnt/test

ホストで /some/where/dir ディレクトリ作成

$ sudo mkdir -p /some/where/dir

ホストでコンテナの config ファイルの最後に以下追加

# pwd
/var/lib/lxc/lxc_ubuntu

# diff -u config.org config
--- config.org  2017-01-08 20:14:33.727390784 +0900
+++ config      2017-01-08 20:16:04.865214903 +0900
@@ -21,3 +21,5 @@
 lxc.network.link = lxcbr0
 lxc.network.flags = up
 lxc.network.hwaddr = 00:16:3e:22:22:ef
+
+lxc.mount.entry = /some/where/dir mnt/test none bind,create=dir 0 0

コンテナを再起動すると以下のようにマウントされました。

$ mount | grep test
/dev/sda1 on /mnt/test type ext4 (rw,relatime,errors=remount-ro,data=ordered)

LXC ホスト OS 起動時にコンテナも自動起動

環境

Ubuntu 16.04 LTS (Xenial) Server

LXC コンテナをリストして確認すると、デフォルトでは AUTOSTART が 0 となっておりホスト OS 起動時にコンテナはシャットダウンされています。

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6
lxc_clone  STOPPED 0         -      -    -
lxc_ubuntu STOPPED 0         -      -    -

lxc_ubuntu コンテナの AUTOSTART を 1 にし、ホスト OS 起動時に自動起動するようにします。

コンテナの config ファイルの最後に lxc.start.auto = 1 を追加

# pwd
/var/lib/lxc/lxc_ubuntu

# diff -u config.org config
--- config.org  2017-01-02 15:30:59.557679188 +0900
+++ config      2017-01-08 17:49:43.151352672 +0900
@@ -21,3 +21,5 @@
 lxc.network.link = lxcbr0
 lxc.network.flags = up
 lxc.network.hwaddr = 00:16:3e:22:22:ef
+
+lxc.start.auto = 1

AUTOSTART が 1 になりました。

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6
lxc_clone  STOPPED 0         -      -    -
lxc_ubuntu STOPPED 1         -      -    -

ホスト OS を再起動すると、lxc_ubuntu コンテナも起動しています。

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4      IPV6
lxc_clone  STOPPED 0         -      -         -
lxc_ubuntu RUNNING 1         -      10.0.3.69 -

2017年1月2日月曜日

LXC コンテナをクローンしてみました

環境

  • Ubuntu 16.04.1 LTS (xenial) Server

クローン前のコンテナの状態

$ sudo ls -la /var/lib/lxc
total 12
drwx------  3 root root 4096 Jan  2 14:56 .
drwxr-xr-x 45 root root 4096 Jan  2 14:52 ..
drwxrwx---  3 root root 4096 Jan  2 15:30 lxc_ubuntu

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6
lxc_ubuntu STOPPED 0         -      -    -
  • クローン元のコンテナとして lxc_ubuntu を使用します。
  • クローン元の lxc_ubuntu は停止している必要があるとのことです。

lxc_ubuntu をクローン元として lxc_clone コンテナを作成

$ time sudo lxc-copy --name lxc_ubuntu --newname lxc_clone

real    1m33.688s
user    0m2.404s
sys     0m40.980s
  • 以前は lxc-clone コマンドでクローンを作成していたようですが、最近は lxc-copy コマンドを使うようです。

クローン後のコンテナの状態

$ sudo ls -la /var/lib/lxc
total 16
drwx------  4 root root 4096 Jan  2 17:25 .
drwxr-xr-x 45 root root 4096 Jan  2 14:52 ..
drwxrwx---  3 root root 4096 Jan  2 17:25 lxc_clone
drwxrwx---  3 root root 4096 Jan  2 15:30 lxc_ubuntu

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6
lxc_clone  STOPPED 0         -      -    -
lxc_ubuntu STOPPED 0         -      -    -

LXC を試してみました

環境

  • Ubuntu 16.04.1 LTS (xenial) Server

LXC をインストール

$ sudo apt install lxc

以下のようにテンプレートができました。

$ ls -la /usr/share/lxc/templates/
total 412
drwxr-xr-x 2 root root  4096 Jan  2 14:52 .
drwxr-xr-x 6 root root  4096 Jan  2 14:52 ..
-rwxr-xr-x 1 root root 13160 Dec 16 03:43 lxc-alpine
-rwxr-xr-x 1 root root 13704 Dec 16 03:43 lxc-altlinux
-rwxr-xr-x 1 root root 11373 Dec 16 03:43 lxc-archlinux
-rwxr-xr-x 1 root root 12159 Dec 16 03:43 lxc-busybox
-rwxr-xr-x 1 root root 29725 Dec 16 03:43 lxc-centos
-rwxr-xr-x 1 root root 10374 Dec 16 03:43 lxc-cirros
-rwxr-xr-x 1 root root 20312 Dec 16 03:43 lxc-debian
-rwxr-xr-x 1 root root 17914 Dec 16 03:43 lxc-download
-rwxr-xr-x 1 root root 49693 Dec 16 03:43 lxc-fedora
-rwxr-xr-x 1 root root 28384 Dec 16 03:43 lxc-gentoo
-rwxr-xr-x 1 root root 13868 Dec 16 03:43 lxc-openmandriva
-rwxr-xr-x 1 root root 16088 Dec 16 03:43 lxc-opensuse
-rwxr-xr-x 1 root root 41791 Dec 16 03:43 lxc-oracle
-rwxr-xr-x 1 root root 11570 Dec 16 03:43 lxc-plamo
-rwxr-xr-x 1 root root 19242 Dec 16 03:43 lxc-slackware
-rwxr-xr-x 1 root root 26862 Dec 16 03:43 lxc-sparclinux
-rwxr-xr-x 1 root root  6862 Dec 16 03:43 lxc-sshd
-rwxr-xr-x 1 root root 25705 Dec 16 03:43 lxc-ubuntu
-rwxr-xr-x 1 root root 11734 Dec 16 03:43 lxc-ubuntu-cloud

コンテナ環境作成

$ sudo lxc-create -t ubuntu -n lxc_ubuntu
... snip ...
Current default time zone: 'Etc/UTC'
Local time is now:      Mon Jan  2 06:30:58 UTC 2017.
Universal Time is now:  Mon Jan  2 06:30:58 UTC 2017.


##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
  • インストールが完了するまで、それなりに時間がかかります。

コンテナのディレクトリが作成されました。

$ sudo ls -la /var/lib/lxc
total 12
drwx------  3 root root 4096 Jan  2 14:56 .
drwxr-xr-x 45 root root 4096 Jan  2 14:52 ..
drwxrwx---  3 root root 4096 Jan  2 15:30 lxc_ubuntu

コンテナ一覧を確認

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6
lxc_ubuntu STOPPED 0         -      -    -

コンテナを起動

$ sudo lxc-start -n lxc_ubuntu -d

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4      IPV6
lxc_ubuntu RUNNING 0         -      10.0.3.69 -

コンテナのコンソールに接続

$ sudo lxc-console -n lxc_ubuntu

Connected to tty 1
                  Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself

Ubuntu 16.04.1 LTS lxc_ubuntu pts/0

lxc_ubuntu login:
  • デフォルトのログインユーザー ubuntu、パスワード ubuntu

インストールされたディストリビューションを確認

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

LANG を確認

$ echo $LANG
en_US.UTF-8

タイムゾーンを変更

コンテナインストール直後のタイムゾーン

$ date
Mon Jan  2 07:41:13 UTC 2017

タイムゾーンを変更

$ sudo dpkg-reconfigure tzdata
  • Asia - Tokyo を選択

変更後のタイムゾーン

$ date
Mon Jan  2 16:47:27 JST 2017

コンテナから切断するには <Ctrl+a q>

コンテナを停止する場合はコンテナ内で shutdown コマンドを打つか、ホストで以下を実行

$ sudo lxc-stop -n lxc_ubuntu

$ sudo lxc-ls --fancy
NAME       STATE   AUTOSTART GROUPS IPV4 IPV6
lxc_ubuntu STOPPED 0         -      -    -