관리 메뉴

Joonas' Note

[번역] Docker - OpenStack (2/4) 본문

개발/Docker

[번역] Docker - OpenStack (2/4)

joonas 2018. 10. 29. 23:22

원문: https://wiki.openstack.org/wiki/Docker

[번역] Docker - OpenStack (1/4)

[번역] Docker - OpenStack (2/4)

[번역] Docker - OpenStack (3/4)

[번역] Docker - OpenStack (4/4)

2. 도커를 사용하기 위한 기존 오픈스택 설치 설정


2.1. 오픈스택을 위한 도커 설치

첫 번째 요구 사항은, 내 컴퓨팅 호스트에 도커를 설치하는 것입니다.

로컬 소켓을 통해 도커와 Nova가 통신하려면, nova 사용자를 docker 그룹에 추가한 후 변경 사항을 적용하기 위해 컴퓨팅 서비스를 재시작합니다.

usermod -aG docker nova
service openstack-nova-compute restart

드라이버도 설치해야 합니다.

pip install -e git+https://github.com/stackforge/nova-docker#egg=novadocker

필요한 모듈들도 설치해야 합니다.

cd src/novadocker/
python setup.py install

이를 위해 운영 체제 패키지를 작성하거나, 별도의 배포를 위해서 적당한 다른 설치 메소드를 사용해도 됩니다.

2.2. Nova 설정

Nova는 도커 가상 드라이버를 사용하기 위한 설정이 필요합니다.

설정 파일인 /etc/nova/nova.conf 에 적힌 옵션을 아래와 같이 수정합니다.

[DEFAULT]
compute_driver = novadocker.virt.docker.DockerDriver

/etc/nova/rootwrap.d 디렉토리 파일을 만듭니다. 그리고 그 안에 docker.filters 라는 파일을 만든 후 다음과 같이 작성합니다.

# nova-rootwrap command filters for setting up network in the docker driver
# This file should be owned by (and only-writeable by) the root user

[Filters]
# nova/virt/docker/driver.py: 'ln', '-sf', '/var/run/netns/.*'
ln: CommandFilter, /bin/ln, root

2.3. Glance 설정

Glance가 컨테이너 포맷으로 "docker"를 지원할 수 있도록 설정이 필요합니다. 기존에 설치된 glance를 깨지지 않게 하려면, 기존 설정을 그대로 유지하는 걸 명심하세요.

[DEFAULT]
container_formats = ami,ari,aki,bare,ovf,docker

2.4. Nova-Docker 사용하기

도커 드라이버를 써서 Nova를 설정해보셨다면, 흐름은 다른 드라이버와 같습니다.

$ glance image-list
+----------------+---------------------------------+-------------+------------------+----------+--------+
| ID             | Name                            | Disk Format | Container Format | Size     | Status |
+----------------+---------------------------------+-------------+------------------+----------+--------+
| f5049d8b-93... | cirros-0.3.1-x86_64-uec         | ami         | ami              | 25165824 | active |
| 0f1ec86c-15... | cirros-0.3.1-x86_64-uec-kernel  | aki         | aki              | 4955792  | active |
| 03a54807-2e... | cirros-0.3.1-x86_64-uec-ramdisk | ari         | ari              | 3714968  | active |
| 77083f3c-d3... | docker-busybox:latest           | raw         | docker           | 2271596  | active |
+----------------+---------------------------------+-------------+------------------+----------+--------+

컨테이너 포맷이 "docker"인 이미지만 부팅이 가능합니다. 이미지는 기본적으로 컨테이너 파일 시스템의 tarball을 포함합니다.

도커를 사용해서 Glance에 새 이미지를 추가하는 것을 권장합니다. 예를 들어, 다음과 같이 퍼블릭 레지스트리에서 이미지를 가져오고, Nova 인스턴스를 부팅하기 위해 Glance로 등록할 수도 있습니다.

$ docker search hipache
Found 3 results matching your query ("hipache")
NAME                             DESCRIPTIONsamalba/hipache                  https://github.com/dotcloud/hipache

그리고 이미지를 도커로부터 pull 한 후, 도커에서 Glance로 push 합니다.

$ docker pull samalba/hipache
$ docker save samalba/hipache | glance image-create --is-public=True --container-format=docker --disk-format=raw --name samalba/hipache

NOTE: Glance에서의 이름은 도커에서의 이미지 이름과 반드시 일치해야 합니다.

$ glance image-list
+----------------+---------------------------------+-------------+------------------+----------+--------+
| ID             | Name                            | Disk Format | Container Format | Size     | Status |
+----------------+---------------------------------+-------------+------------------+----------+--------+
| f5049d8b-93... | cirros-0.3.1-x86_64-uec         | ami         | ami              | 25165824 | active |
| 0f1ec86c-15... | cirros-0.3.1-x86_64-uec-kernel  | aki         | aki              | 4955792  | active |
| 03a54807-2e... | cirros-0.3.1-x86_64-uec-ramdisk | ari         | ari              | 3714968  | active |
| 77083f3c-d3... | docker-busybox:latest           | raw         | docker           | 2271596  | active |
| 998f52ba-fe... | samalba/hipache                 | raw         | docker           | 486      | active |
+----------------+---------------------------------+-------------+------------------+----------+--------+

이제 Nova CLI로 인스턴스들을 부팅할 수 있습니다.

$ nova boot --image "samalba/hipache" --flavor m1.tiny test
+--------------------------------------+--------------------------------------+
| Property                             | Value                                |
+--------------------------------------+--------------------------------------+
| OS-EXT-STS:task_state                | scheduling                           |
| image                                | samalba/hipache                      |
| OS-EXT-STS:vm_state                  | building                             |
| OS-EXT-SRV-ATTR:instance_name        | instance-0000002d                    |
| OS-SRV-USG:launched_at               | None                                 |
| flavor                               | m1.micro                             |
| id                                   | 31086c50-f937-4f80-9790-045096ecb32c |
| security_groups                      | [{u'name': u'default'}]              |
| user_id                              | 1a3eed38d1344e869dd019b3636db12b     |
| OS-DCF:diskConfig                    | MANUAL                               |
| accessIPv4                           |                                      |
| accessIPv6                           |                                      |
| progress                             | 0                                    |
| OS-EXT-STS:power_state               | 0                                    |
| OS-EXT-AZ:availability_zone          | nova                                 |
| config_drive                         |                                      |
| status                               | BUILD                                |
| updated                              | 2013-08-25T00:22:32Z                 |
| hostId                               |                                      |
| OS-EXT-SRV-ATTR:host                 | None                                 |
| OS-SRV-USG:terminated_at             | None                                 |
| key_name                             | None                                 |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | None                                 |
| name                                 | test                                 |
| adminPass                            | QwczSPAAT6Mm                         |
| tenant_id                            | 183a9b7ed7c6465f97387458d693ca4c     |
| created                              | 2013-08-25T00:22:31Z                 |
| os-extended-volumes:volumes_attached | []                                   |
| metadata                             | {}                                   |
+--------------------------------------+--------------------------------------+

인스턴스가 부팅되고 나면 다음과 같습니다.

$ nova list
+--------------------------------------+------+--------+------------+-------------+------------------+
| ID                                   | Name | Status | Task State | Power State | Networks         |
+--------------------------------------+------+--------+------------+-------------+------------------+
| 31086c50-f937-4f80-9790-045096ecb32c | test | ACTIVE | None       | Running     | private=10.0.0.2 |
+--------------------------------------+------+--------+------------+-------------+------------------+

도커에서도 해당 컨테이너를 볼 수 있습니다.

$ docker ps
ID            IMAGE             COMMAND  CREATED          STATUS         PORTS
f337c7fec5ff  samalba/hipache   sh       10 seconds ago   Up 10 seconds

여기서는 이미지 안에 설정된 커맨드를 사용했습니다. 각 컨테이너 이미지는 실행을 위한 명령을 가질 수 있고, 드라이버는 보통 이걸 오버라이딩 하진 않습니다. Dockerfile로 이미지를 제대로 작성한다면, 아파치 인스턴스를 부팅하는 이미지를 만들어 아파치 프로세스를 시작시킬 수 있습니다.



옮긴이 말

(2020. 04. 16 추가)

파이썬 모듈을 아래와 같이 설치하는 중에, 오류가 있으신 분은 참고하시길 바랍니다.

pip install -e git+https://github.com/stackforge/nova-docker#egg=novadocker

위에서 사용된 링크는 Archived 되어서 사용하지 못합니다.

옮겨진 repo의 주소로 변경했습니다. 아래 커맨드를 사용해보세요.

pip install -e git+https://opendev.org/openstack/zun#egg=novadocker


아니면 소스 코드를 가져와 직접 설치하시는 방법도 있습니다.

이 부분은 https://jiming.tistory.com/m/208 에서 4. OpenStack(Devstack, nova-docker plusgin) 설치 부분을 확인해보세요.

반응형
3 Comments
  • 프로필사진 msdbtjd123 2020.04.02 15:19 안녕하세요! openstack을 공부중인 학생입니다.
    궁금한게 있어서 댓글을 남깁니다!

    제가 지금 CentOS 7에 packstack을 이용하여 openstack-rocky버전을 설치한 상태입니다.
    Docker를 연동하여 사용하고 싶어서 올리신 글 처럼 따라하다가 pip install -e git+https://github.com/stackforge/nova-docker#egg=novadocker 여기에서 막혔는데 주소를 접속해보면 프로젝트가 중지 되었다고 뜨는데...

    혹시 이제 Openstack에서 Docker를 지원하지 않는건가요??ㅜ
  • 프로필사진 joonas 2020.04.04 02:35 신고 엇. 6개월 전에 프로젝트가 다른 링크로 옮겨졌네요. 남은 브랜치 중에 Ocata 버전이 있긴 한데, 커맨드를 아래 중 하나로 해보시겠어요?

    pip install -e git+https://github.com/stackforge/nova-docker.git@stable/ocata#egg=novadocker

    pip install -e git+https://opendev.org/openstack/zun#egg=novadocker
  • 프로필사진 joonas 2020.04.04 02:48 신고 혹은 소스코드를 가져와서 직접 설치하는 방법이 있는데, 이건 내용을 추가해보겠습니다
댓글쓰기 폼