LXC, 약어 리눅스 컨테이너은(는) 실제로 운영 체제 위에서 실행되는 경량 Linux 커널 기반 가상화 솔루션으로, 여러 개의 격리된 배포를 동시에 실행할 수 있습니다.
차이점 LXC 그리고 KVM 가상화 LXC는 하드웨어를 에뮬레이트하지 않지만 chroot 응용 프로그램과 유사한 동일한 커널 이름 공간을 공유합니다.
이것은 LXC를 다음과 같은 다른 가상화 솔루션에 비해 매우 빠른 가상화 솔루션으로 만듭니다. KVM, 젠 또는 VMware.
이 기사에서는 CentOS/RHEL 및 Fedora 배포판에서 LXC 컨테이너를 설치, 배포 및 실행하는 방법을 안내합니다.
최소한의 설치로 작동하는 Linux 운영 체제:
1. LXC 가상화는 다음을 통해 제공됩니다. 에펠 저장소. 이 리포지토리를 사용하려면 터미널을 열고 다음 명령을 실행하여 시스템에 Epel 리포지토리를 설치하십시오.
# yum은 epel-release를 설치합니다.
2. LXC 설치 프로세스를 계속하기 전에 다음을 확인하십시오. 펄 언어 인터프리터 및 debootstrap 패키지는 아래 명령을 실행하여 설치됩니다.
# yum install debootstrap perl libvirt.
3. 마지막으로 다음 명령어로 LXC 가상화 솔루션을 설치합니다.
# yum은 lxc lxc-템플릿을 설치합니다.
4. LXC 서비스를 설치한 후 다음을 확인하십시오. LXC 그리고 libvirt 데몬이 실행 중입니다.
# systemctl 상태 lxc.service. # systemctl lxc.service를 시작합니다. # systemctl start libvirtd # systemctl 상태 lxc.service.
LXC 데몬 상태 확인
[[이메일 보호됨] ~]# systemctl 상태 lxc.service lxc.service - LXC 컨테이너 초기화 및 자동 부팅 코드 로드됨: 로드됨(/usr/lib/systemd/system/lxc.service; 비활성화됨) 활성: 비활성(죽음) [[이메일 보호됨] ~]# systemctl 시작 lxc.service [[이메일 보호됨] ~]# systemctl 상태 lxc.service lxc.service - LXC 컨테이너 초기화 및 자동 부팅 코드 로드됨: 로드됨(/usr/lib/systemd/system/lxc.service; 비활성화됨) 활성: 활성(종료)금요일 2016-04-01 02:33:36 EDT 이후; 1분 37초 전 프로세스: 2250 ExecStart=/usr/libexec/lxc/lxc-autostart-helper start (code=exited, status=0/SUCCESS) 프로세스: 2244 ExecStartPre=/usr/libexec/lxc/lxc-devsetup (code=exited, status=0/SUCCESS) Main PID: 2250 (code=exited, status=0/SUCCESS) Apr 01 02:33:06 mail systemd[1]: LXC 컨테이너 초기화 및 자동 부팅 코드 시작 중... Apr 01 02:33:06 mail lxc-devsetup[2244]: /dev/.lxc 생성 중. Apr 01 02:33:06 mail lxc-devsetup[2244]: /dev는 devtmpfs입니다. Apr 01 02:33:06 mail lxc-devsetup[2244]: /dev/.lxc/user 생성 중. Apr 01 02:33:36 mail lxc-autostart-helper[2250]: LXC 자동 부트 컨테이너 시작 중: [ OK ] Apr 01 02:33:36 mail systemd[1]: LXC 컨테이너 초기화 및 자동 부팅 코드를 시작했습니다.
아래 명령을 실행하여 LXC 커널 가상화 상태를 확인합니다.
# lxc-checkconfig.
LXC 커널 가상화 구성 확인
[[이메일 보호됨] ~]# lxc-checkconfig
/proc/config.gz에서 커널 구성을 찾을 수 없습니다. 수색... 커널 구성은 /boot/config-3.10.0-229.el7.x86_64에 있습니다. 네임스페이스 네임스페이스: 활성화
Utsname 네임스페이스: 활성화
IPC 네임스페이스: 활성화
PID 네임스페이스: 활성화
사용자 네임스페이스: 활성화
네트워크 네임스페이스: 활성화
여러 /dev/pts 인스턴스: 활성화 제어 그룹 Cgroup: 활성화
Cgroup clone_children 플래그: 활성화
씨그룹 장치: 활성화
씨그룹 일정: 활성화
Cgroup CPU 계정: 활성화
Cgroup 메모리 컨트롤러: 활성화
씨그룹 CPU셋: 활성화 기타 Veth 페어링 장치: 활성화
맥블란: 활성화
블란: 활성화
교량: 활성화
고급 넷필터: 활성화
CONFIG_NF_NAT_IPV4: 활성화
CONFIG_NF_NAT_IPV6: 활성화
CONFIG_IP_NF_TARGET_MASQUERADE: 활성화
CONFIG_IP6_NF_TARGET_MASQUERADE: 활성화
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: 활성화 검사점/복원 검사점 복원: 누락되었습니다. CONFIG_FHANDLE: 활성화
CONFIG_EVENTFD: 활성화
CONFIG_EPOL: 활성화
CONFIG_UNIX_DIAG: 활성화
CONFIG_INET_DIAG: 활성화
CONFIG_PACKET_DIAG: 활성화
CONFIG_NETLINK_DIAG: 활성화
파일 기능: 활성화 참고: 새 커널을 부팅하기 전에 구성을 확인할 수 있습니다. 사용법: CONFIG=/path/to/config /usr/bin/lxc-checkconfig.
5. 시스템에 이미 설치된 사용 가능한 LXC 템플릿 컨테이너를 나열하려면 아래 명령을 실행하십시오.
# ls -alh /usr/share/lxc/templates/
LXC 템플릿 컨테이너 나열
총 344K. drwxr-xr-x. 2 루트 루트 4.0K 4월 1일 02:32. drwxr-xr-x. 6 루트 루트 100 4월 1일 02:32.. -rwxr-xr-x. 1 루트 루트 11K 11월 15일 10:19 lxc-alpine. -rwxr-xr-x. 1 루트 루트 14K 11월 15일 10:19 lxc-altlinux. -rwxr-xr-x. 1 루트 루트 11K 11월 15일 10:19 lxc-archlinux. -rwxr-xr-x. 1 루트 루트 9.7K 11월 15일 10:19 lxc-busybox. -rwxr-xr-x. 1 루트 루트 29K 11월 15일 10:19 lxc-centos. -rwxr-xr-x. 1 루트 루트 11K 11월 15일 10:19 lxc-cirros. -rwxr-xr-x. 1 루트 루트 17K 11월 15일 10:19 lxc-debian. -rwxr-xr-x. 1 루트 루트 18K 11월 15일 10:19 lxc-다운로드. -rwxr-xr-x. 1 루트 루트 49K 11월 15일 10:19 lxc-fedora. -rwxr-xr-x. 1 루트 루트 28K 11월 15일 10:19 lxc-gentoo. -rwxr-xr-x. 1 루트 루트 14K 11월 15일 10:19 lxc-openmandriva. -rwxr-xr-x. 1 루트 루트 14K 11월 15일 10:19 lxc-opensuse. -rwxr-xr-x. 1 루트 루트 35K 11월 15일 10:19 lxc-oracle. -rwxr-xr-x. 1 루트 루트 12K 11월 15일 10:19 lxc-plamo. -rwxr-xr-x. 1 루트 루트 6.7K 11월 15일 10:19 lxc-sshd. -rwxr-xr-x. 1 루트 루트 23K 11월 15일 10:19 lxc-ubuntu. -rwxr-xr-x. 1 루트 루트 12K 11월 15일 10:19 lxc-ubuntu-cloud.
6. LXC 컨테이너를 만드는 과정은 매우 간단합니다. 새 컨테이너를 만드는 명령 구문은 아래에 설명되어 있습니다.
# lxc-create -n 컨테이너 이름 -t 컨테이너 템플릿.
아래 발췌문에서 이름이 새 컨테이너를 만듭니다. 마이 데브
기반으로 데비안
LXC 저장소에서 가져올 템플릿입니다.
LXC 컨테이너 생성
[[이메일 보호됨] ~]# lxc-create -n mydcb -t 데비안
debootstrap은 /usr/sbin/debootstrap입니다. /var/cache/lxc/debian/rootfs-jessie-amd64에서 캐시 다운로드 확인 중... 데비안 미니멈 다운로드 중... W: 릴리스 서명을 확인할 수 없습니다. 키링 파일을 사용할 수 없습니다. /usr/share/keyrings/debian-archive-keyring.gpg. I: 릴리스 검색 I: 패키지 검색 I: 패키지 유효성 검사 I: 필수 패키지의 종속성 해결... I: 기본 패키지의 종속성 해결......
7. 일련의 기본 종속성 및 패키지가 다운로드되어 시스템에 설치되면 컨테이너가 생성됩니다. 프로세스가 완료되면 기본 루트 계정 암호가 메시지에 표시됩니다. 안전을 위해 컨테이너 콘솔을 시작하고 로그인하면 이 비밀번호를 변경하십시오.
지원되고 시스템에 설치됩니다. perl: 경고: 표준 로케일("C")로 대체합니다. /proc/cmdline을 읽지 못했습니다. 무시: 해당 파일이나 디렉터리가 없습니다. invoke-rc.d: policy-rc.d가 시작 실행을 거부했습니다. 컨테이너의 시간대가 구성되지 않았습니다. 수동으로 조정하십시오. 루트 비밀번호는 '뿌리', 바꿔주세요 ! 로케일 생성 중(시간이 걸릴 수 있음)... en_IN.en_IN...문자 맵 파일 `en_IN'을(를) 찾을 수 없음: 해당 파일이나 디렉토리가 없습니다. /usr/share/i18n/locales/en_IN: 55: LC_MONETARY: 'currency_symbol' 필드에 알 수 없는 문자가 있습니다. 생성 완료.
8. 이제 사용할 수 있습니다. lxc-ls
컨테이너를 나열하고 lxc 정보
실행/중지된 컨테이너에 대한 정보를 얻습니다.
새로 생성된 컨테이너를 백그라운드에서 시작하려면(다음을 지정하여 데몬으로 실행됩니다. -NS
옵션) 다음 명령을 실행합니다.
# lxc-start -n mydeb -d.
9. 컨테이너가 시작된 후 다음을 사용하여 실행 중인 컨테이너를 나열할 수 있습니다. lxc-ls --활성
명령을 실행하고 실행 중인 컨테이너에 대한 자세한 정보를 가져옵니다.
# lxc-ls --활성.
10. 컨테이너 콘솔에 로그인하려면 다음을 실행하십시오. lxc-콘솔
실행 중인 컨테이너 이름에 대한 명령입니다. root 사용자와 lxc 감독자가 기본적으로 생성한 암호로 로그인합니다.
컨테이너에 로그인하면 다음을 표시하여 배포를 확인하기 위해 여러 명령을 실행할 수 있습니다. /etc/issue.net
파일 내용, 다음을 실행하여 루트 암호 변경 암호
명령을 사용하거나 네트워크 인터페이스에 대한 세부 정보 보기 ifconfig
.
# lxc-console -n mydeb. # 고양이 /etc/issue.net. # 경우 구성. #암호.
LXC 컨테이너에 연결
[[이메일 보호됨]~]# lxc-console -n mydcb tty 1에 연결되었습니다. 콘솔을 종료하려면 <Ctrl+a q>를 입력하고,Ctrl+a 자체를 입력하려면 Debian GNU/Linux 8 mydcb tty1 mydcb 로그인: 뿌리 비밀번호: 마지막 로그인: Fri Apr 1 07:39:08 UTC 2016 on console. Linux mydcb 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 Debian GNU/Linux 시스템에 포함된 프로그램은 자유 소프트웨어입니다. 각 프로그램의 정확한 배포 조건은 에 설명되어 있습니다. /usr/share/doc/*/copyright에 있는 개별 파일. 데비안 GNU/리눅스는 어느 정도 보증을 하지 않습니다. 해당 법률에 의해 허용됩니다. [이메일 보호됨]:~# 고양이 /etc/issue.net 데비안 GNU/리눅스 8. [이메일 보호됨]:~# ifconfig eth0 링크 encap: 이더넷 HWaddr 00:16:3e: d9:21:d7 inet6 addr: fe80::216:3eff: fed9:21d7/64 범위: Link UP BROADCAST RUNNING MULTICAST MTU: 1500 메트릭: 1 RX 패킷: 107 오류: 0 삭제: 0 오버런: 0 프레임: 0 TX 패킷: 8 오류: 0 삭제: 0 오버런: 0 캐리어: 0 충돌: 0 txqueuelen: 1000 RX 바이트: 5796(5.6KiB) TX 바이트: 648(648.0 B) lo 링크 캡슐: 로컬 루프백 inet addr: 127.0.0.1 마스크: 255.0.0.0 inet6 addr: ::1/128 범위: 호스트 UP LOOPBACK RUNNING MTU: 65536 메트릭: 1 RX 패킷: 0 오류: 0 삭제: 0 오버런: 0 프레임: 0 TX 패킷: 0 오류: 0 삭제: 0 오버런: 0 캐리어: 0 충돌: 0 txqueuelen: 0 RX 바이트: 0 (0.0 B) TX 바이트: 0(0.0B) [이메일 보호됨]:~# 암호 루트 새 UNIX 암호 입력: 새 UNIX 암호 다시 입력: passwd: 암호가 성공적으로 업데이트되었습니다.
11. 컨테이너 콘솔에서 분리하고 호스트 콘솔로 돌아가서 컨테이너를 활성 상태로 두려면 다음을 누르십시오. Ctrl+a
그 다음에 NS
키보드에.
실행 중인 컨테이너를 중지하려면 다음 명령을 실행하십시오.
# lxc-stop -n mydcb.
12. Ubuntu 템플릿을 기반으로 LXC 컨테이너를 생성하려면 다음을 입력하십시오. /usr/sbin/
디렉토리를 만들고 다음을 생성하십시오. 디부트스트랩 심볼릭 링크.
# cd /usr/sbin. # ln -s debootstrap qemu-debootstrap.
13. 편집하다 qemu-debootstrap
파일 비 편집기를 열고 다음 두 개를 바꿉니다. 거울 다음과 같은 줄:
DEF_MIRROR=” http://mirrors.kernel.org/ubuntu” DEF_HTTPS_MIRROR=” https://mirrors.kernel.org/ubuntu”
참고로 다음 내용을 참고하여 위의 두 줄을 명시된 대로 배치합니다.
... MAKE_TARBALL="" EXTRACTOR_OVERRIDE="" UNPACK_TARBALL="" 추가="" 제외="" 자세한 ="" 인증서="" CHECKCERTIF="" 개인 키=""DEF_MIRROR=” http://mirrors.kernel.org/ubuntu” DEF_HTTPS_MIRROR=” https://mirrors.kernel.org/ubuntu”
14. 마지막으로 다음을 기반으로 새 LXC 컨테이너를 만듭니다. 우분투 동일한 발행 템플릿 lxc 생성
명령.
Ubuntu 컨테이너 생성 프로세스가 완료되면 아래 스크린샷과 같이 컨테이너 기본 로그인 자격 증명이 메시지에 표시됩니다.
# lxc-create -n myubuntu -t 우분투.
LXC Ubuntu 컨테이너 생성
/var/cache/lxc/precise/rootfs-amd64에서 캐시 다운로드 확인 중... 템플릿에 패키지 설치: ssh, vim, language-pack-en. 우분투 정확한 최소 다운로드 중...
15. 로컬 템플릿을 기반으로 특정 컨테이너를 생성하려면 다음 구문을 사용하십시오.
# lxc-create -n container_name -t container_template -- -r distro_release -a distro_architercture
다음은 생성의 일부입니다. 데비안 천명 용기 amd64 시스템 구조.
# lxc-create -n mywheezy -t 데비안 -- -r wheezy -a amd64.
Distro 아키텍처 기반 LXC 컨테이너 생성
debootstrap은 /sbin/debootstrap입니다. /var/cache/lxc/debian/rootfs-wheezy-amd64에서 캐시 다운로드 확인 중... 데비안 미니멈 다운로드 중... W: 릴리스 서명을 확인할 수 없습니다. 키링 파일을 사용할 수 없습니다. /usr/share/keyrings/debian-archive-keyring.gpg. I: 릴리스 검색 I: 패키지 검색 I: 패키지 유효성 검사 I: 필수 패키지의 종속성 해결... I: 기본 패키지의 종속성 해결 중... I: 추가 필수 종속성 발견: insserv libbz2-1.0 libdb5.1 libsemanage-common libsemanage1 libslang2 libustr-1.0-1 I: 추가 기본 종속성 발견: adduser debian-archive-keyring gnupg gpgv isc-dhcp-common libapt-pkg4.12 libbsd0 libclass-isa-perl libedit2 libgdbm3 libgssapi-krb5-2 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libncursesw5 libprocps0 libreadline6 libssl1.0.0 libstdc++6 libswitch-perl libusb-0.1-4 libwrap0 openssh-client perl perl-modules procps readline-common I: 구성 요소 확인 중 메인에 http://http.debian.net/debian... I: libacl1 2.2.51-8을 검색 중입니다. I: libacl1 2.2.51-8 검증. I: adduser 3.113+nmu3를 검색 중입니다. I: adduser 3.113+nmu3의 유효성을 검사합니다. I: apt 0.9.7.9+deb7u7을 검색합니다. I: apt 0.9.7.9+deb7u7을 확인합니다. I: libapt-pkg4.12 0.9.7.9+deb7u7을 검색 중입니다. I: libapt-pkg4.12 0.9.7.9+deb7u7을 확인합니다. I: libattr1 1:2.4.46-8을 검색 중입니다. I: libattr1 1:2.4.46-8 검증. I: 기본 파일 검색 7.1wheezy9. I: 기본 파일 검증 7.1wheezy9. I: base-passwd 3.5.26 검색 중...
16. 예를 들어 다양한 배포판 및 아키텍처에 대한 특정 컨테이너를 생성할 수도 있습니다. 아래 그림과 같이 LXC 저장소에서 다운로드되는 일반 템플릿에서 예.
# lxc-create -n mycentos6 -t 다운로드 -- -d centos -r 6 -a i386.
다음은 목록입니다. lxc 생성
명령줄 스위치:
-n = 이름 -t = 템플릿. -d = 분포. -a = 아치. -r = 릴리스.
17. 컨테이너는 다음을 사용하여 호스트에서 삭제할 수 있습니다. lxc-파괴
컨테이너 이름에 대해 실행된 명령입니다.
# lxc-destroy -n mywheezy.
18. 다음을 실행하여 기존 컨테이너에서 컨테이너를 복제할 수 있습니다. lxc-클론
명령:
# lxc-clone mydeb mydeb-clone.
19. 마지막으로 생성된 모든 컨테이너는 /var/lib/lxc/
예배 규칙서. 어떤 이유로 컨테이너 설정을 수동으로 조정해야 하는 경우 각 컨테이너 디렉토리에서 구성 파일을 편집해야 합니다.
# ls /var/lib/lxc.
이것은 LXC를 사용하기 위해 알아야 할 기본 사항일 뿐입니다.