LXC와 LXD 둘중 뭐로할까 고민을 했는데

회사에서 쓰고있는 LXD를 이용하기로 결정했다.

 

검색해보면 LXD보다는 LXC 문서가 많아서 걱정이 됬는데 잘 정리된 글을 보고 따라하니 한방에 성공.

나중에 까먹지 않기 위해서 블로그에 정리하는 글이다.

 

참조한 문서는 

https://www.cyberciti.biz/faq/how-to-set-up-and-use-lxd-on-centos-linux-7-x-server/

 

How to Set Up and Use LXD on CentOS Linux 7.x Server - nixCraft

Explains how to set up and use LXD on CentOS Linux 7.x server and create or configure your first operating system level virtualization.

www.cyberciti.biz

 

Step 1 – CentOS 7 업데이트

sudo yum update
sudo reboot // 난 리붓안함

 

Step 2 –  on CentOS 7에 EPEL 저장소 설정

sudo yum install epel-release
sudo yum update

 

Step 3 – CentOS 리눅스에서 COPR 저장소를 활성화 및 구성하는 방법

sudo yum install yum-plugin-copr

sudo yum copr enable ngompa/snapcore-el7

 

Step 4 – LXD 설치

sudo yum install snapd
sudo systemctl enable --now snapd.socket

 

Step 5 – LXD용 CentOS Linux 커널 구성


grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
sudo sh -c 'echo "user.max_user_namespaces=3883" > /etc/sysctl.d/99-userns.conf'
sudo reboot

Step 6 – LXD를 CentOS에 설치


sudo snap search lxd

sudo snap install lxd
sudo ln -s /var/lib/snapd/snap /snap

 

설치 확인하는법:
snap list
snap services // 이거할때 데몬에러뜸 하지만 무시

// 여기까지 진행 후 Reboot으로 시스템 재부팅

Step 7 – LXD 설정


sudo usermod -a -G lxd vivek
newgrp lxd
id

 

// LXC 서버 확인 (생성된 컨테이너를 확인할 수 있다. 하지만 지금은 초기라 List에 뜨는게 없을꺼임)
lxc list

 

[root@localhost 아무개]# lxc image list images:
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+
|                ALIAS                 | FINGERPRINT  | PUBLIC |                 DESCRIPTION                  |  ARCH   |   SIZE    |          UPLOAD DATE          |
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+
| alpine/3.6 (3 more)                  | d3416fd3f3e3 | yes    | Alpine 3.6 amd64 (20190528_13:00)            | x86_64  | 3.17MB    | May 28, 2019 at 12:00am (UTC) |
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+
| alpine/3.6/arm64 (1 more)            | cc9107640c99 | yes    | Alpine 3.6 arm64 (20190528_13:02)            | aarch64 | 3.07MB    | May 28, 2019 at 12:00am (UTC) |
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+

 

// LXC Storage 생성 (컨테이너를 생성하기위한 스토리지 생성단계)
lxd init

[root@localhost 아무개]# lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, ceph, dir, lvm) [default=btrfs]: lvm
Create a new LVM pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=15GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 

 

[root@localhost 아무개]# lxc storage list        // 생성된 스토리지 확인
+---------+-------------+--------+--------------------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |                   SOURCE                   | USED BY |
+---------+-------------+--------+--------------------------------------------+---------+
| default |             | lvm    | /var/snap/lxd/common/lxd/disks/default.img | 1       |
+---------+-------------+--------+--------------------------------------------+---------+

 

Step 8 – 첫번째 컨테이너 생성하기

// 아래의 명령어를 사용하면 설치할수 있는 컨테이너의 List가 출력됨(무수히 많음)

lxc image list images:  // 전체 리스트
$ lxc image list images: | grep -i centos  // Centos 리스트
$ lxc image list images: | grep -u ubuntu // Ubuntu 리스트

 

첫번째 컨테이너 생성하는 방법

 


lxc launch images:{distro}/{version}/{arch} {container-name-here}

lxc launch images:{운영체제}/{버전}/{비트?} {컨테이너 이름}
Let us see some examples to create and start containers from various Linux distro images as per your needs.

 

[root@localhost 아무개]# lxc launch images:centos/7/amd64 test
Creating test
Starting test   

CentOS7 리눅스 생성 방법

lxc launch images:centos/7/amd64 cenots-db  

Ubuntu 리눅스 생성 방법

lxc launch images:ubuntu/xenial/amd64 ubuntu-nginx

Fedora 리눅스 생성 방법

lxc launch images:fedora/28/amd64 fedora27-c1

 

LXD의 명령어들


lxc list // 생성된 컨테이너 목록


[root@localhost 아무개]# lxc list

+------+---------+-----------------------+----------------------------------------------+------------+-----------+
| NAME |  STATE  |         IPV4          |                     IPV6                     |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+----------------------------------------------+------------+-----------+
| test | RUNNING | 10.14.12.13 (eth0) | fd42:e47e:ef8a:90b:216:3eff:fee0:867b (eth0) | PERSISTENT |           |

+------+---------+-----------------------+----------------------------------------------+------------+-----------+

 


시작 종료 재부팅 방법
lxc start 컨테이너명     // 시작
lxc stop 컨테이너명     // 종료
lxc restart 컨테이너명  // 재시작

 

제거 or 삭제

lxc delete 컨테이너명   // 삭제


컨테이너 정보 가져오기
lxc info 컨테이너명      // 정보

 

컨테이너에 접속하기
lxc exec 컨테이너명 bash

[root@localhost 아무개]# lxc exec test bash
[root@test ~]#

 

Posted by 루우지
TAG centos7, Linux, LXC, lxd

안녕하세요. 

아마존에서 제공하는 AWS를 이용한 개인 서버를 만들어 보도록 하겠습니다.



국내에는 네이버의 네이버클라우드 플랫폼이 작년에 공식으로 런칭되었죠.

구글도 구글 클라우드 플랫폼이란 서비스를 제공하고 있습니다.



하지만 많은 기업들이 아마존에서 서버를 운영하고 있는지 

구인구직 사이트를 보면 AWS 관련 기술을 요구하는곳이 많더라구요.



그래서! 

저는 AWS를 이용한 리눅스 서버 구축과 접속하는 방법을 포스팅 해보도록 하겠습니다.




순서


1. 회원가입 (생략)


2. ec2 인스턴스 생성 (서버 생성)


3. Putty 설치 및 pkk파일 만들기


4. 서버 접속




1. 회원가입 

- 계정 생성은 어렵지 않으니 이 파트는 생략하겠습니다.




2. ec2 인스턴스 생성 (서버 생성)



2.1 로그인하기

https://console.aws.amazon.com 접속해서 콘솔 로그인하기







2.2 리전 바꾸기 (지역)

- 우측 상단의 지역이름을 클릭하세요

- 아시아 태평양(서울)을 클릭하세요



2.3 EC2 서비스 생성하기

- 로그인하면 AWS 서비스 화면이 뜹니다.

- 컴퓨팅 메뉴의 EC2를 클릭해주세요


(1)

[ EC2 클릭 ]




(2)

[ 인스턴스 시작 클릭 ]







(3)

[ 저는 우분투 서버를 선택했습니다. 원하시는 OS가 있다면 해당 OS로 선택해주세요 ]






(4)

[ 기본 사양 선택 ]






(5)

[ 시작 클릭 ]






(6)

 ※ 중요한 키페어 생성 단계입니다.


서버 접속시 필요한 고유한 키입니다.

보관에 유의하세요.






(7)

[ 인스턴스 보기 클릭 ]






(8)

생성된 인스턴스(서버)를 확인하실 수 있습니다.

퍼블릭 IP와 퍼블릭DNS가 할당되었네요!






3. Putty 설치 및 pkk파일 만들기


3.2 PuTTY 설치

- 설치파일입니다. 다운로드 받으세요


putty.exe

puttygen.exe




3.2 PuTTYgen으로 pem파일 ppk파일 변환

- 푸티로 접속하기위해선 서버생성시 받은 키페어(펨키)를 푸티용으로 변환시켜야합니다.



(1)

[ Conversions -> import key 클릭 ]



(2)

[ 다운로드 받은 pem파일 선택 ]





(3)

[ Save private Key 클릭 ]





(4)

[ 예 클릭 ]





(5)

[ 저장할 위치 선택 ]





(6)

[ 만들어진 pkk파일 ]





4. 서버 접속

- 푸티를 이용한 서버 접속을 진행하겠습니다.

- 진행하기 앞서 앞에 만들었던 인스턴스의 퍼블릭 IP를 알으셔야합니다.

- AWS EC2 대시보드에 생성된 인스턴스의 퍼블릭 IP가 표기됩니다. 



(1)

[ Host Name 에 ubuntu@Public IP 를 입력해주세요 ]





(2)

[ Connection -> SSH -> Auth 이동 후

Private Key file for authentication 의 browse 버튼을 클릭 ]




(3)

[ 생성한 ppk파일 선택 ]




(4)

[ Open 클릭 ]






(5)

[ 예 클릭 ]





리눅스 터미널에 접속된 화면입니다.

이로써 AWS Ubuntu 서버 구축이 끝났습니다. 

^^

Posted by 루우지