Docker 코리아 캐주얼 토크 :
boot2docker 사용시 컨테이너
에서 생성한 데이터를 유지하기
# boot2docker 사용시 컨테이너에서 생성한 데이터를
유지하는 방법
* 호스트 컴퓨터의 /Users 폴더에 마운트
* boot2docker 가상머신 내부의 폴더에 마운트
* 볼륨 컨테이너 사용
# 호스트 컴퓨터의 /Users 폴더에 마운트
```
$ docker run 
-p 5432:5432 
-v ~/postgresql:/var/lib/postgresql/data 
postgres:9.4
```
```
initdb: could not create directory "/var/lib/postgresql/data/global":
Permission denied
```
boot2docker 는 `bootdocker up` 실행시 다음과 같이 호스트 폴더를 VM 으로 마
운트
* Users share at /Users
* /Users share at /Users
* c/Users share at /c/Users
* /c/Users share at /c/Users
* c:/Users share at /c/Users
boo2docker 에서 /Users 를 docker:staff 계정을 사용해 자동으로 마운트
컨테이너에서 새로운 계정 생성시 boot2docker 와 다른 UID/GID 를 가지게된다.
파일 생성과 삭제는 폴더 권한을 777로 변경해 해결
하지만 하드링크 생성은 VirtualBox의 버그로
(https://www.virtualbox.org/ticket/818) 여전히 동작하지 않는다.
관련 이슈
: https://github.com/boot2docker/boot2docker/issues/581#issuecomm
ent-60309186
> 호스트의 데이터를 바로 읽을 경우 유용
> 불필요하게 호스트의 파일 및 폴더의 권한을 변경해야 해야 한다
# boot2docker 가상머신 내부의 폴더에 마운트
```
$ docker run 
-p 5432:5432 
-v /var/lib/boot2docker/postgresql:/var/lib/postgresql/data 
postgres:9.4
```
`boot2docker init` 명령어 실행시 다음 2개의 가상디스크를 생성하고 VM에 마운트
* /var/lib/docker
* /var/lib/boot2docker
> 가상 디스크는 `boot2docker delete` 명령어 실행시 삭제
# 볼륨 컨테이너 사용
```
$ docker run --name pg-data 
-v /var/lib/postgresql/data 
busybox
$ docker run 
-p 5432:5432 
--volumes-from pg-data 
postgres:9.4
```
> 볼륨 컨테이너의 데이터는 `/var/lib/docker` 가 지워지지 않는한 유지
# 결론
DB의 데이터를 유지 시키는 용도로 볼륨 컨테이너 사용,
호스트의 데이터를 읽기 위한 용도로 /Users 마운트

More Related Content

PDF
리눅스 간단 강의 2강
PDF
리눅스 간단 강의 4강
PDF
Docker
PDF
도커 이미지 레이어 구조
PDF
Dockerfile과 도커 이미지 레이어 관계
PDF
docker build cache
PDF
docker_quick_start
PPT
Backend Master | 3.4.5 Deploy - Docker Principal
리눅스 간단 강의 2강
리눅스 간단 강의 4강
Docker
도커 이미지 레이어 구조
Dockerfile과 도커 이미지 레이어 관계
docker build cache
docker_quick_start
Backend Master | 3.4.5 Deploy - Docker Principal

What's hot (14)

PDF
RancherOS Introduction
PPTX
Grub의 이해
PDF
도커 학습과 Boot2Docker
PDF
윈도우에서 도커 설치
PPTX
Git basic2 chaos
PDF
Devon 2011-o-3-kde 어제 오늘 그리고 내일
PDF
Dockerfile과 Bash
PPTX
Ffmpeg for android
PDF
1.intro to k8s
PDF
[Nomad connection]docker seminar 15.10.08
PDF
Docker introduction
PPTX
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
PDF
가장 빨리 만나는 Docker 출간 후기
PPTX
이것이 리눅스다 - 김종욱
RancherOS Introduction
Grub의 이해
도커 학습과 Boot2Docker
윈도우에서 도커 설치
Git basic2 chaos
Devon 2011-o-3-kde 어제 오늘 그리고 내일
Dockerfile과 Bash
Ffmpeg for android
1.intro to k8s
[Nomad connection]docker seminar 15.10.08
Docker introduction
리스펙토링 세미나 - 웹 브라우저 동작 개념, Node.js를 통한 서버 이해, REST API
가장 빨리 만나는 Docker 출간 후기
이것이 리눅스다 - 김종욱
Ad

Viewers also liked (20)

PDF
정책가이드북
PDF
Docker registry swift
PDF
Docker registry swift_junojunho
PPTX
RZDESK-Docker hackday
PPTX
PDF
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
PPTX
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
PDF
포스테키안 서평공모전 당선작(2016-1)
PDF
국회입법조사처 발암성물질 관리체계 개선방안(2010)
PPTX
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
PPTX
Introduce Docker
PDF
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
PDF
005.총공급과 총수요
PDF
도커를 이용한 파이썬 모듈 배포하기
PPTX
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
PDF
Devfair kubernetes 101
PPTX
Docker contribution slideshare
PDF
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
PDF
Docker for V-Raptor(ARM Server)
PDF
Docker기반 분산 플랫폼
정책가이드북
Docker registry swift
Docker registry swift_junojunho
RZDESK-Docker hackday
Docker Casual Talk #2 - Dockerizing newrelic-sysmond
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
포스테키안 서평공모전 당선작(2016-1)
국회입법조사처 발암성물질 관리체계 개선방안(2010)
Docker 와 Python 으로 아카마이 API 5분만에 사용해보기!
Introduce Docker
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
005.총공급과 총수요
도커를 이용한 파이썬 모듈 배포하기
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
Devfair kubernetes 101
Docker contribution slideshare
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
Docker for V-Raptor(ARM Server)
Docker기반 분산 플랫폼
Ad

More from 창훈 정 (12)

PDF
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
PDF
개발자를 위한 Amazon Lightsail Deep-Dive
PDF
AWS re:invent 2016 후기
PDF
AWSKRUG 정기 세미나 (2016년 9월) - Lambda + S3 썸네일 생성 및 운영
PDF
형태소 분석기를 적용한 elasticsearch 운영
PDF
ActiveRecord Associations(2) - RORLab Season 3-8
PDF
ActiveRecord Observers - RORLab Season 3-6
PDF
ActiveRecord Associations(1) - RORLab Season 3-7
PDF
ActiveRecord Callbacks - RORLab Season 3-5
PDF
Rails Database Migrations - RORLab Season 3-3
PDF
Install Rails On Mac OS - RORLab Season 3-2
ZIP
Vim for you
Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기
개발자를 위한 Amazon Lightsail Deep-Dive
AWS re:invent 2016 후기
AWSKRUG 정기 세미나 (2016년 9월) - Lambda + S3 썸네일 생성 및 운영
형태소 분석기를 적용한 elasticsearch 운영
ActiveRecord Associations(2) - RORLab Season 3-8
ActiveRecord Observers - RORLab Season 3-6
ActiveRecord Associations(1) - RORLab Season 3-7
ActiveRecord Callbacks - RORLab Season 3-5
Rails Database Migrations - RORLab Season 3-3
Install Rails On Mac OS - RORLab Season 3-2
Vim for you

boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하기

  • 1. Docker 코리아 캐주얼 토크 : boot2docker 사용시 컨테이너 에서 생성한 데이터를 유지하기
  • 2. # boot2docker 사용시 컨테이너에서 생성한 데이터를 유지하는 방법 * 호스트 컴퓨터의 /Users 폴더에 마운트 * boot2docker 가상머신 내부의 폴더에 마운트 * 볼륨 컨테이너 사용
  • 3. # 호스트 컴퓨터의 /Users 폴더에 마운트 ``` $ docker run -p 5432:5432 -v ~/postgresql:/var/lib/postgresql/data postgres:9.4 ``` ``` initdb: could not create directory "/var/lib/postgresql/data/global": Permission denied ```
  • 4. boot2docker 는 `bootdocker up` 실행시 다음과 같이 호스트 폴더를 VM 으로 마 운트 * Users share at /Users * /Users share at /Users * c/Users share at /c/Users * /c/Users share at /c/Users * c:/Users share at /c/Users
  • 5. boo2docker 에서 /Users 를 docker:staff 계정을 사용해 자동으로 마운트 컨테이너에서 새로운 계정 생성시 boot2docker 와 다른 UID/GID 를 가지게된다. 파일 생성과 삭제는 폴더 권한을 777로 변경해 해결 하지만 하드링크 생성은 VirtualBox의 버그로 (https://www.virtualbox.org/ticket/818) 여전히 동작하지 않는다. 관련 이슈 : https://github.com/boot2docker/boot2docker/issues/581#issuecomm ent-60309186 > 호스트의 데이터를 바로 읽을 경우 유용 > 불필요하게 호스트의 파일 및 폴더의 권한을 변경해야 해야 한다
  • 6. # boot2docker 가상머신 내부의 폴더에 마운트 ``` $ docker run -p 5432:5432 -v /var/lib/boot2docker/postgresql:/var/lib/postgresql/data postgres:9.4 ``` `boot2docker init` 명령어 실행시 다음 2개의 가상디스크를 생성하고 VM에 마운트 * /var/lib/docker * /var/lib/boot2docker > 가상 디스크는 `boot2docker delete` 명령어 실행시 삭제
  • 7. # 볼륨 컨테이너 사용 ``` $ docker run --name pg-data -v /var/lib/postgresql/data busybox $ docker run -p 5432:5432 --volumes-from pg-data postgres:9.4 ``` > 볼륨 컨테이너의 데이터는 `/var/lib/docker` 가 지워지지 않는한 유지
  • 8. # 결론 DB의 데이터를 유지 시키는 용도로 볼륨 컨테이너 사용, 호스트의 데이터를 읽기 위한 용도로 /Users 마운트