2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoolxc: linux Container library
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo(C) Copyright IBM Corp. 2007, 2008
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooAuthors:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooDaniel Lezcano <daniel.lezcano at free.fr>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooThis library is free software; you can redistribute it and/or
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoomodify it under the terms of the GNU Lesser General Public
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooLicense as published by the Free Software Foundation; either
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yooversion 2.1 of the License, or (at your option) any later version.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooThis library is distributed in the hope that it will be useful,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoobut WITHOUT ANY WARRANTY; without even the implied warranty of
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooLesser General Public License for more details.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooYou should have received a copy of the GNU Lesser General Public
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooLicense along with this library; if not, write to the Free Software
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae YooTranslated into Korean
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yooby Sungbae Yoo <sungbae.yoo at samsung.com>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo-->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<!DOCTYPE refentry PUBLIC @docdtd@ [
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<!ENTITY seealso SYSTEM "@builddir@/see_also.sgml">
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo]>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<refentry>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <docinfo>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <date>@LXC_GENERATE_DATE@</date>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </docinfo>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refmeta>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refentrytitle>lxc</refentrytitle>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <manvolnum>7</manvolnum>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refmiscinfo>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Version @PACKAGE_VERSION@
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refmiscinfo>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refmeta>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refnamediv>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refname>lxc</refname>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refpurpose>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo linux containers
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Linux 컨테이너
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refpurpose>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refnamediv>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Quick start -->빠른 도움말</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo You are in a hurry, and you don't want to read this man page. Ok,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo without warranty, here are the commands to launch a shell inside
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo a container with a predefined configuration template, it may
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo work.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>@BINDIR@/lxc-execute -n foo -f
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo @DOCDIR@/examples/lxc-macvlan.conf /bin/bash</command>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo man 페이지를 읽고 싶지는 않지만 서둘러서 해보고 싶다면,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 된다고 보장할 수는 없지만, 미리정의된 설정파일로 컨테이너 내에서 쉘을 실행하는 아래 명령어를 소개하고자 한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>@BINDIR@/lxc-execute -n foo -f
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo @DOCDIR@/examples/lxc-macvlan.conf /bin/bash</command>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Overview -->개요</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The container technology is actively being pushed into the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo mainstream linux kernel. It provides the resource management
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo through the control groups aka process containers and resource
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo isolation through the namespaces.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 기술은 리눅스 커널의 메인스트림에서 활발하게 개발이 진행되고 있다. 컨트롤 그룹(aka. 프로세스 컨테이너)을 통한 자원 관리와 네임스페이슬 통한 자원의 고립 기능을 제공한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The linux containers, <command>lxc</command>, aims to use these
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo new functionalities to provide a userspace container object
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo which provides full resource isolation and resource control for
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo an applications or a system.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo linux 컨테이너 (<command>lxc</command>)는 사용자영역 컨테이너 개체를 제공하는 새로운 기능을 사용하는 것을 목표로 하고 있다. 이 새로운 기능은 응용 프로그램이나 시스템에서 모든 자원의 격리와 제어를 제공한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The first objective of this project is to make the life easier
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo for the kernel developers involved in the containers project and
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo especially to continue working on the Checkpoint/Restart new
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo features. The <command>lxc</command> is small enough to easily
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo manage a container with simple command lines and complete enough
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo to be used for other purposes.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 이 프로젝트의 첫번째 목적은 컨테이너 프로젝트에 속해있는 커널 개발자들의 작업을 편하게 하며, 특히 새로운 기능인 Checkpoing/Restart에 대해 계속 작업을 진행해 나가는 것이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc</command>는 작지만, 컨테이너를 간단한 명령어를 통해 쉽게 관리할 수 있고, 다목적으로 사용되기에도 충분하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Requirements -->요구사항</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The <command>lxc</command> relies on a set of functionalities
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo provided by the kernel which needs to be active. Depending of
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the missing functionalities the <command>lxc</command> will
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo work with a restricted number of functionalities or will simply
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo fail.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc</command>는 커널이 제공하는 몇가지 기능들에 의존적이며, 해당 기능이 활성화되어 있어야 한다. 부족한 기능에 따라, 제한된 기능만이 동작하거나, 아예 동작을 안 할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The following list gives the kernel features to be enabled in
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the kernel to have the full features container:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 아래 리스트는 컨테이너의 모든 기능을 사용하기 위해 활성화되어야 하는 커널 기능들이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * General setup
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Control Group support
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Namespace cgroup subsystem
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Freezer cgroup subsystem
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Cpuset support
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Simple CPU accounting cgroup subsystem
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Resource counters
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Memory resource controllers for Control Groups
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Group CPU scheduler
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Basis for grouping tasks (Control Groups)
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Namespaces support
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> UTS namespace
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> IPC namespace
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> User namespace
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Pid namespace
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Network namespace
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Device Drivers
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Character devices
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Support multiple instances of devpts
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Network device support
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> MAC-VLAN support
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> Virtual ethernet pair device
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Networking
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Networking options
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> 802.1d Ethernet Bridging
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo * Security options
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -> File POSIX Capabilities
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The kernel version >= 2.6.32 shipped with the distros, will
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo work with <command>lxc</command>, this one will have less
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo functionalities but enough to be interesting.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The helper script <command>lxc-checkconfig</command> will give
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo you information about your kernel configuration.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 배포판들에 포함된 2.6.32 이상의 커널에서는 <command>lxc</command>가 동작한다. 매우 작은 기능만 있지만 충분히 사용할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-checkconfig</command> 스크립트를 사용하면 현재 커널 설정에 대한 정보를 얻을 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The control group can be mounted anywhere, eg:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>mount -t cgroup cgroup /cgroup</command>.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo It is however recommended to use cgmanager, cgroup-lite or systemd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo to mount the cgroup hierarchy under /sys/fs/cgroup.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨트롤 그룹은 어디에든지 마운트될 수 있다. 예를 들어
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>mount -t cgroup cgroup /cgroup</command>도 가능하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 그러나 cgmanager, cgroup-lite 또는 systemd를 사용하여, /sys/fs/cgroup에 cgroup 계층구조를 마운트하는 것이 좋다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Functional specification -->기능 사양</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo A container is an object isolating some resources of the host,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo for the application or system running in it.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너는 응용프로그램이나 시스템을 내부에서 실행시키기 위해, 호스트의 몇몇 자원들을 격리시키는 객체이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The application / system will be launched inside a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container specified by a configuration that is either
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo initially created or passed as parameter of the starting
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo commands.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 어플리케이션/시스템은 처음 생성될때 또는 시작 명령어의 인자로 넘겨주었던 설정을 기반으로 한 컨테이너 안에서 실행된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo How to run an application in a container ?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 어떻게 컨테이너 내부에서 응용 프로그램을 실행하는가?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Before running an application, you should know what are the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo resources you want to isolate. The default configuration is to
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo isolate the pids, the sysv ipc and the mount points. If you want
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo to run a simple shell inside a container, a basic configuration
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo is needed, especially if you want to share the rootfs. If you
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo want to run an application like <command>sshd</command>, you
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo should provide a new network stack and a new hostname. If you
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo want to avoid conflicts with some files
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo eg. <filename>/var/run/httpd.pid</filename>, you should
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo remount <filename>/var/run</filename> with an empty
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo directory. If you want to avoid the conflicts in all the cases,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo you can specify a rootfs for the container. The rootfs can be a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo directory tree, previously bind mounted with the initial rootfs,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo so you can still use your distro but with your
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo own <filename>/etc</filename> and <filename>/home</filename>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 어플리케이션을 실행하기에 앞서, 고립시키고 싶은 자원을 먼저 알아야 한다. 기본 설정은 pid와 sysv ipc 그리고 마운트 포인트들을 고립시킨다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 만약에 간단한 쉘을 컨테이너 내부에서 실행시키기 원한다면, 특히 rootfs를 공유하고 싶다면 매우 기초적인 설정이 요구된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>sshd</command> 같은 응용 프로그램을 실행시키고 싶다면, 새로운 네트워크 스택과 호스트네임을 제공해 주어야 한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 만약 몇몇 파일들, 예를 들어, <filename>/var/run/httpd.pid</filename>이 충돌나는것을 막고 싶다면, <filename>/var/run</filename>를 빈 디렉토리로 다시 마운트하는 것이 필요하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 모든 경우의 파일 충돌을 피하고 싶다면, 컨테이너를 위한 루트 파일시스템를 따로 지정해 줄 수도 있다. 루트 파일시스템은 미리 원래의 루트 파일시스템을 바인드 마운트한 디렉토리가 될 수도 있다. 이렇게 되면 자신만의 <filename>/etc</filename>, <filename>/home</filename>을 사용하면서도 배포판을 그대로 사용할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Here is an example of directory tree
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo for <command>sshd</command>:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo[root@lxc sshd]$ tree -d rootfs
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoorootfs
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; bin
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; dev
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| |&#045;&#045; pts
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| `&#045;&#045; shm
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| `&#045;&#045; network
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; etc
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| `&#045;&#045; ssh
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; lib
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; proc
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; root
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; sbin
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; sys
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|&#045;&#045; usr
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo`&#045;&#045; var
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo |&#045;&#045; empty
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | `&#045;&#045; sshd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo |&#045;&#045; lib
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | `&#045;&#045; empty
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | `&#045;&#045; sshd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo `&#045;&#045; run
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo `&#045;&#045; sshd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo and the mount points file associated with it:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo [root@lxc sshd]$ cat fstab
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /lib /home/root/sshd/rootfs/lib none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /bin /home/root/sshd/rootfs/bin none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /usr /home/root/sshd/rootfs/usr none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /sbin /home/root/sshd/rootfs/sbin none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 아래는 <command>sshd</command>를 사용하기 위한 디렉토리 트리 예제이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo[root@lxc sshd]$ tree -d rootfs
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoorootfs
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- bin
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- dev
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| |-- pts
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| `-- shm
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| `-- network
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- etc
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo| `-- ssh
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- lib
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- proc
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- root
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- sbin
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- sys
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo|-- usr
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo`-- var
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo |-- empty
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | `-- sshd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo |-- lib
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | `-- empty
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | `-- sshd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo `-- run
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo `-- sshd
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 그리고, 해당 마운트 포인트 파일의 내용은 아래와 같다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo [root@lxc sshd]$ cat fstab
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /lib /home/root/sshd/rootfs/lib none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /bin /home/root/sshd/rootfs/bin none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /usr /home/root/sshd/rootfs/usr none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /sbin /home/root/sshd/rootfs/sbin none ro,bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo How to run a system in a container ?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 어떻게 컨테이너 내에서 시스템을 실행하는가?
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Running a system inside a container is paradoxically easier
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo than running an application. Why ? Because you don't have to care
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo about the resources to be isolated, everything need to be
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo isolated, the other resources are specified as being isolated but
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo without configuration because the container will set them
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo up. eg. the ipv4 address will be setup by the system container
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo init scripts. Here is an example of the mount points file:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo [root@lxc debian]$ cat fstab
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /dev /home/root/debian/rootfs/dev none bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /dev/pts /home/root/debian/rootfs/dev/pts none bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo More information can be added to the container to facilitate the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo configuration. For example, make accessible from the container
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the resolv.conf file belonging to the host.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /etc/resolv.conf /home/root/debian/rootfs/etc/resolv.conf none bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 내에서 시스템을 실행하는 것은 역설적으로 어플리케이션을 실행하는 것보다 쉽다. 왜 그럴까? 왜냐하면, 어떤 자원이 고립되어야 하는지 고려할 필요가 없다. 모든 자원이 고립되면 된다. 자원들은 별다른 설정없이 고립된다고 지정만 해도 된다. 왜냐하면 컨테이너가 그 자원들을 세팅할 것이기 때문이다. 예를 들어 ipv4 주소는 시스템 컨테이너의 init 스크립트들을 통해 세팅된다. 아래는 마운트 포인트 파일의 예제이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo [root@lxc debian]$ cat fstab
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /dev /home/root/debian/rootfs/dev none bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /dev/pts /home/root/debian/rootfs/dev/pts none bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 설정을 돕기 위해서 컨테이너에 부가 정보를 추가할 수 있다. 아래와 같이 호스트에 있는 resolv.conf를 컨테이너 안에서 접근할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo /etc/resolv.conf /home/root/debian/rootfs/etc/resolv.conf none bind 0 0
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Container life cycle -->컨테이너의 생명주기</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo When the container is created, it contains the configuration
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo information. When a process is launched, the container will be
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo starting and running. When the last process running inside the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container exits, the container is stopped.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너가 생성될때, 컨테이너는 설정정보를 포함하게 된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 프로세스가 실행될때, 컨테이너는 시작되고 실행된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 내에서 실행되던 마지막 프로세스가 종료되면, 컨테이너는 종료된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo In case of failure when the container is initialized, it will
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo pass through the aborting state.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너의 초기화가 실패했을 경우, (아래 그림처럼)중단 상태로 바뀌게 된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<![CDATA[
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo ---------
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | STOPPED |<---------------
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo --------- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo start |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo V |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo ---------- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | STARTING |--error- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo ---------- | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo V V |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo --------- ---------- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | RUNNING | | ABORTING | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo --------- ---------- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo no process | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo V | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo ---------- | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | STOPPING |<------- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo ---------- |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo | |
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo ---------------------
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo]]>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Configuration -->설정</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The container is configured through a configuration
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo file, the format of the configuration file is described in
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <citerefentry>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refentrytitle><filename>lxc.conf</filename></refentrytitle>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <manvolnum>5</manvolnum>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </citerefentry>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너는 설정파일에 의해서 설정된다. 설정파일의 형식은 다음을 참조하면 된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <citerefentry>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refentrytitle><filename>lxc.conf</filename></refentrytitle>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <manvolnum>5</manvolnum>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </citerefentry>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!--Creating / Destroying container
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo (persistent container) -->컨테이너의 생성/제거 (지속 컨테이너)</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo A persistent container object can be
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo created via the <command>lxc-create</command>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo command. It takes a container name as parameter and
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo optional configuration file and template.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The name is used by the different
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo commands to refer to this
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container. The <command>lxc-destroy</command> command will
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo destroy the container object.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-create -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-destroy -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 지속성 컨테이너 객체는 <command>lxc-create</command> 명령어로 생성된다. 컨테이너이름을 인수로 받으며, 부가적인 설정파일과 템플릿을 지정한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 여기서 지정하는 이름은 다른 명령어들을 사용할 때 해당 컨테이너를 참조하기 위해 사용된다. <command>lxc-destroy</command> 명령어는 컨테이너 객체를 제거한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-create -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-destroy -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Volatile container -->휘발성 컨테이너</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo It is not mandatory to create a container object
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo before to start it.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The container can be directly started with a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo configuration file as parameter.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 시작전에 컨테이너 오브젝트를 생성하는 것이 의무는 아니다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너는 설정파일을 파라미터로 넣어서 바로 시작할 수도 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Starting / Stopping container -->컨테이너의 시작과 종료</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo When the container has been created, it is ready to run an
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo application / system.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo This is the purpose of the <command>lxc-execute</command> and
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-start</command> commands.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo If the container was not created before
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo starting the application, the container will use the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo configuration file passed as parameter to the command,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo and if there is no such parameter either, then
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo it will use a default isolation.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo If the application is ended, the container will be stopped also,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo but if needed the <command>lxc-stop</command> command can
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo be used to kill the still running application.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너가 생성하면 응용 프로그램/시스템이 실행될 준비를 마친 것이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 실행하는 것이 바로 <command>lxc-execute</command>와 <command>lxc-start</command> 명령어의 목적이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 응용프로그램 시작전에 컨테이너가 생성되어 있지 않다면, 컨테이너는 명령어의 인수로 넘겼던 설정파일을 사용한다. 그런 인수마저 없다면, 기본 고립 환경을 사용한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 만약 응용프로그램이 종료되면, 컨테이너도 역시 종료된다. 실행중인 응용프로그램을 종료시키고 싶다면 <command>lxc-stop</command>를 사용하면 된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Running an application inside a container is not exactly the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo same thing as running a system. For this reason, there are two
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo different commands to run an application into a container:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-execute -n foo [-f config] /bin/bash
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-start -n foo [-f config] [/bin/bash]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 내부에서 응용프로그램을 실행하는 것은 시스템을 실행하는 것과는 차이가 있다. 이런 이유로 아래의 두가지 명령어가 사용된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-execute -n foo [-f config] /bin/bash
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-start -n foo [-f config] [/bin/bash]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-execute</command> command will run the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo specified command into the container via an intermediate
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo process, <command>lxc-init</command>.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo This lxc-init after launching the specified command,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will wait for its end and all other reparented processes.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo (to support daemons in the container).
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo In other words, in the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container, <command>lxc-init</command> has the pid 1 and the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo first process of the application has the pid 2.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-execute</command> 명령어는 컨테이너 내부에서 <command>lxc-init</command> 프로세스를 통해 실행할 명령어를 지정할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-init는 지정한 명령어를 실행한 후, 그 명령어로 실행된 모든 프로세스들이 종료되기를 기다린다. (컨테이너 내부에서 데몬을 지원하기 위해서이다)
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 다시 말해서, 컨테이너 내부에서 <command>lxc-init</command>는 1번 pid를 갖고, 응용프로그램의 첫번째 프로세스는 2번 pid를 가진다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-start</command> command will run directly the specified
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo command into the container.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The pid of the first process is 1. If no command is
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo specified <command>lxc-start</command> will
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo run the command defined in lxc.init_cmd or if not set,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <filename>/sbin/init</filename> .
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-start</command> 명령어는 지정한 명령어를 컨테이너 내에서 직접 실행한다. 첫 프로세스의 pid는 1번이다. 만약 어떤 명령어도 지정되지 않으면, lxc.init_cmd에 지정된 명령어를 실행한다. 이마저도 지정되있지 않으면, <filename>/sbin/init</filename>를 실행한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo To summarize, <command>lxc-execute</command> is for running
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo an application and <command>lxc-start</command> is better suited for
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo running a system.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 요약하자면, <command>lxc-execute</command>는 응용 프로그램 실행을 위해서, <command>lxc-start</command>는 시스템 실행을 위해 적합하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo If the application is no longer responding, is inaccessible or is
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo not able to finish by itself, a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo wild <command>lxc-stop</command> command will kill all the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo processes in the container without pity.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-stop -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 만약 어플리케이션이 더이상 응답하지 않거나, 접근이 불가능하거나, 스스로 종료되지 못할 경우, <command>lxc-stop</command> 명령어는 컨테이너 내의 모든 프로세스들을 가차없이 종료시킬 것이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-stop -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Connect to an available tty -->사용가능한 tty 접속</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo If the container is configured with the ttys, it is possible
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo to access it through them. It is up to the container to
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo provide a set of available tty to be used by the following
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo command. When the tty is lost, it is possible to reconnect it
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo without login again.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-console -n foo -t 3
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너에 tty가 설정되어 있다면, tty를 통해 컨테이너에 접근할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 아래 명령어를 통해 사용될 가능한 tty를 제공하는 것은 컨테이너에 달려있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo tty가 종료되었을 때는 다시 로그인하지 않고도 재접속할 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-console -n foo -t 3
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Freeze / Unfreeze container -->컨테이너 동결/동결 해제</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Sometime, it is useful to stop all the processes belonging to
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo a container, eg. for job scheduling. The commands:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-freeze -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will put all the processes in an uninteruptible state and
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-unfreeze -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will resume them.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 스케줄링 등을 위해 컨테이너에 속해있는 모든 프로세스를 정지 시키는 것은 때로 유용할 수 있다. 아래 명령어들을 사용하면 된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-freeze -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 는 모든 프로세스들을 인터럽트 불가능한 상태로 만든다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-unfreeze -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 는 모든 프로세스를 정지 해제 시킨다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo This feature is enabled if the cgroup freezer is enabled in the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo kernel.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 이 기능은 커널에서 cgroup freezer 기능이 활성화 되어 있어야 사용 가능하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Getting information about container -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 관련 정보 얻어오기</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo When there are a lot of containers, it is hard to follow
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo what has been created or destroyed, what is running or what are
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the pids running into a specific container. For this reason, the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo following commands may be useful:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-ls
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-info -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
4ff8fb6cae48bc4cd376fffa70c69a7cd72425bcSungbae Yoo 컨테이너가 많이 존재하는 경우, 어떤 것이 생성되고 제거됬는지, 어떤 것이 실행 중인지 또는 어떤 프로세스들이 특정 컨테이너 내에서 실행되는지를 따라가기 힘들다. 이를 위해 다음과 같은 명령어들이 유용하게 사용될 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-ls
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-info -n foo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-ls</command> lists the containers of the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo system.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-ls</command>는 시스템의 컨테이너들의 리스트를 표시한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-info</command> gives information for a specific
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-info</command>는 지정한 컨테이너의 정보를 얻어온다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo Here is an example on how the combination of these commands
0fe2983a45c91fadcf6afdf82af018b7cb59ee72Stéphane Graber allows one to list all the containers and retrieve their state.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo for i in $(lxc-ls -1); do
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-info -n $i
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo done
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 아래는 명령어들을 조합하여 컨테이너들의 리스트를 얻어오고 상태를 출력하는 예제이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo for i in $(lxc-ls -1); do
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-info -n $i
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo done
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Monitoring container -->컨테이너 모니터링</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo It is sometime useful to track the states of a container,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo for example to monitor it or just to wait for a specific
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo state in a script.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너의 상태를 추적하는 것은 때때로 매우 유용하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 예를 들어, 상태를 모니터링하거나, 스크립트에서 특정상태를 기다리는 경우이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-monitor</command> command will monitor one or
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo several containers. The parameter of this command accept a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo regular expression for example:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-monitor -n "foo|bar"
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will monitor the states of containers named 'foo' and 'bar', and:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-monitor -n ".*"
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will monitor all the containers.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-monitor</command> 명령어는 하나 또는 여러개의 컨테이너들을 모니터링한다. 이 명령어의 인수로 정규표현식을 넘길 수도 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 예를 들면,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-monitor -n "foo|bar"
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 는 'foo'와 'bar'라는 이름의 컨테이너의 상태 변화를 모니터링한다. 그리고,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-monitor -n ".*"
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 는 모든 컨테이너를 모니터링한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo For a container 'foo' starting, doing some work and exiting,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the output will be in the form:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [STARTING]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [RUNNING]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [STOPPING]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [STOPPED]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' 컨테이너가 시작되고 몇 가지 작업을 수행하고 종료된 경우,
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 출력은 다음과 같다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [STARTING]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [RUNNING]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [STOPPING]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 'foo' changed state to [STOPPED]
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-wait</command> command will wait for a specific
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo state change and exit. This is useful for scripting to
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo synchronize the launch of a container or the end. The
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo parameter is an ORed combination of different states. The
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo following example shows how to wait for a container if he went
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo to the background.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<![CDATA[
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # launch lxc-wait in background
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-wait -n foo -s STOPPED &
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo LXC_WAIT_PID=$!
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # this command goes in background
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-execute -n foo mydaemon &
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # block until the lxc-wait exits
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # and lxc-wait exits when the container
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # is STOPPED
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo wait $LXC_WAIT_PID
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo echo "'foo' is finished"
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo]]>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-wait</command> 명령어는 지정한 상태로 변화되는 것을 기다린다. 이 명령어는 컨테이너의 시작이나 종료와 동기화되는 스크립트를 작성할 때 유용하다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 인수는 다른 상태들을 OR로 묶어서 지정해 줄 수 있다. 아래 예제는 백그라운드에서 어떻게 컨테이너의 상태 변화를 기다리는지 보여준다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<![CDATA[
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # launch lxc-wait in background
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-wait -n foo -s STOPPED &
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo LXC_WAIT_PID=$!
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # this command goes in background
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-execute -n foo mydaemon &
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # block until the lxc-wait exits
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # and lxc-wait exits when the container
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo # is STOPPED
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo wait $LXC_WAIT_PID
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo echo "'foo' is finished"
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo]]>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Setting the control group for container -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너 컨트롤 그룹 설정
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The container is tied with the control groups, when a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container is started a control group is created and associated
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo with it. The control group properties can be read and modified
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo when the container is running by using the lxc-cgroup command.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너는 컨트롤 그룹과 결합되어 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너가 시작되면 컨트롤그룹이 만들어지고 해당 컨트롤 그룹과 연결된다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 컨테이너가 실행중일 때, lxc-cgroup 명령어를 이용해 컨트롤 그룹 속성은 읽거나 수정될 수 있다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-cgroup</command> command is used to set or get a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo control group subsystem which is associated with a
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo container. The subsystem name is handled by the user, the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo command won't do any syntax checking on the subsystem name, if
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the subsystem name does not exists, the command will fail.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc-cgroup</command> 명령어는 컨테이너와 연결된 컨트롤 그룹 서브시스템의 값을 얻어오거나 설정한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 서브시스템의 이름은 사용자가 결정하며, 이 명령어는 이름이 적합한지 여부를 검사하지 않는다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 만약 서브시스템의 이름이 없다면 명령어는 실패할 것이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-cgroup -n foo cpuset.cpus
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will display the content of this subsystem.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-cgroup -n foo cpu.shares 512
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo will set the subsystem to the specified value.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-cgroup -n foo cpuset.cpus
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 는 해당 서브시스템의 내용을 표시한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo lxc-cgroup -n foo cpu.shares 512
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </programlisting>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo 는 해당 서브시스템의 값을 설정한다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect2>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Bugs -->버그</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <!--
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo The <command>lxc</command> is still in development, so the
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo command syntax and the API can change. The version 1.0.0 will be
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo the frozen version.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo -->
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <command>lxc</command>는 아직 개발중이다. 그래서 명령어 사용법이나, API가 변경될 수 있다. 버전 1.0.0은 변경되지 않는 고정된 버전이다.
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo &seealso;
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <title><!-- Author -->저자</title>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo <para>Daniel Lezcano <email>daniel.lezcano@free.fr</email></para>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo </refsect1>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo</refentry>
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoo<!-- Keep this comment at the end of the file Local variables: mode:
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoosgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoosgml-always-quote-attributes:t sgml-indent-step:2 sgml-indent-data:t
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoosgml-parent-document:nil sgml-default-dtd-file:nil
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoosgml-exposed-tags:nil sgml-local-catalogs:nil
2b371b262f7272266ff18cc2aff65176a2c16383Sungbae Yoosgml-local-ecat-files:nil End: -->