본문 바로가기

docker

Docker at Deview 2013 발표 자료 공유 Docker at Deview 2013 발표 자료를 공유합니다. shareslide 특성상 동영상은 youtube 링크로 대체 하였습니다. Korea docker user group 에 가입하세요~ https://www.facebook.com/groups/korea.docker.user.group/ 더보기
docker benchmark docker를 사용하는데 있어서 중요한 포인트의 하나가 성능(performance)이 아닐까 한다. docker 사용성 테스트등을 진행하면서 간단하게 프로젝트에서 실제 사용하는 루틴을 기준으로 간이 성능 테스트를 진행한 적은 있었다. ( 허접한 테스트이기도 했고 스팟성 테스트라 감히 오픈하기가 꺼려졌었음... ) 그때 대략 0.79 ~ 0.8 정도의 결과가 나왔었는데, 뭐 결론적으로는 거의 맞았다. # 테스트 과정 크게 다음과 같은 테스트를 진행했다. 1. CPU : sysbench2. Memory : sysbench 3. Disk I/O : dd4. Network : iperf * sysbench의 경우 https://github.com/erikh/docker-bench 참고함. 앞서 dotcloud .. 더보기
awk 및 xargs 를 활용한 명령어 샘플 docker에서 아래와 같은 명령어는 현재까지 실행한 container를 모두 출력하는 명령어이다. docker ps -a 테스트 삼아 상당히 많은 수의 container를 실행했더니 엄청나게 많은 수의 container들이 생겼다. 테스트이니 삭제 해야하는 상황에서 docker에서 redis의 flushall과 같은 container 모두 삭제라는 명령어는 지원하지 않는듯 했다. 그래서 간단히 쉘명령어의 조합으로 만들어봄. docker ps -a | awk '{print$1}' | xargs docker rm 간단히 설명하자면 awk는 공백을 기준으로 데이터를 구분지어 변수화 시켜준다. $1 이것이 공백으로 구분된 첫번째 문자열. 이것을 받아 docker에서 container 삭제 명령어인 docker.. 더보기
Repositories in docker docker 는 git을 기반으로 하고 있다. 이미 눈치챈 사람들도 있겠지만, docker의 images나 container의 ID는 git commit 명령어 실행시 생성되는 SHA1 hash 코드값과 같은 40자이고, 이는 우연의 일치는 아닐 것이다. docker는 repository를 사용하고 있다. docker에서 정의하기를 "repository는 container에 대한 파일 시스템을 함께 생성하는 태그된 image들의 호스팅된 모음입니다. " repository의 이름은 예를 들면, 누가 생성했고 원본이 어디에 위치했는지와 같은 출처에 대해서 표시하는 태그이다. registry가 있는데, 이것은 호스팅되는 하나 이상의 저장소들이 모여 있는 곳이다. (물리적인 저장소) repository의 태그.. 더보기
Commands of docker docker는 콘솔을 기반으로 하기 때문에 명령어에 대해서 알아보도록 하겠다. 일단, 그전에 간단히 앞서 언급한 내용중 다시한번 중요한 사항을 확인하자면, read-only 파일 시스템인 레이어는 image, 최상위 레이어로 read-write 가 가능한 레이어는 container로 정의했었다. # 자주 쓰는 명령어 ( 이중 특히 빈도가 높은 명령어는 underline 처리 ) - build : Dockerfile 이라는 이름을 가지는 docker 전용 build 설정 파일로부터 container를 생성할때 쓰는 명령어이다.아무것도 설정된것이 없는 base 이미지에서 특정 패키지( e.g. mysql, redis etc )을 설치하고, 디렉토리 등을 생성한뒤에 유저를 생성하고 비밀번호를 설정하고 하는 등.. 더보기
Installation of docker Docker의 설치는 제약사항이 좀 있긴 하지만 비교적 간단하다. 가장 손쉽게 Docker를 설치하는 방법은 아래의 리눅스 배포버전을 선택하는 것이다. - Ubuntu Precise 12.04 (LTS) 64bit - Ubuntu Raring 13.04 64bitDocker는 크게 2가지의 의존성을 가지기 때문이다. - Linux kernel 3.8 ( Kernel Requirements ) - AUFS file system 지원0.8 버전 ( 2013-08-25 현재 0.6 ) 부터는 RHEL이나, CentOS도 지원한다고하는 하는데, Kernel에 의존적인 사항을 어떻게 극복할지도 궁금해진다. 그럼 설치를 진행해보자. 위에 언급한대로 Ubuntu Precise 12.04 (LTS) 64bit 리눅스 .. 더보기
docker 를 이해하기 위하여 #2 어제에 이어 계속 정리합니다. # Image ( http://docs.docker.io/en/latest/terms/image/ ) docker에서 앞서 언급한 read-only 레이어는 image라고 불린다. image는 결코 변하지 않는다. docker가 Union File System을 사용한 이래로 프로세스들은 모든 파일 시스템들은 read-write 모드로 마운트 된다고 생각하게 된다. 하지만, 변경되는 모든것들은 쓰기가 가능한 가장 최상위 레이어로 이동하게 되고 그바로 아래에 있는 read-only image의 원본 파일은 변하지 않는다. image들은 바뀌지 않기 때문에 image는 상태를 가질 수 없다. Parent Image 각 image는 아래층을 형성한 더 많은 image에 따라서 의.. 더보기
docker 를 이해하기 위하여 #1 docker의 경우 이전 포스트에서 어떤 것인지 대략 그림이 그려졌다. ( 지극히 주관적인 post 임 ) docker를 이해하기 위해선 약간의 사전 정보가 필요하다. Linux에 cgroups라는 새로운 시스템이 커널에 추가되었다. cgroups는 커널에서 다른 프로세스 그룹간에 격리할 수 있는 방법을 제공한다. 이 기술을 바탕으로 LXC( LinuX Containers)라는 프로젝트가 생겨났다. docker는 이 LXC를 기반으로 가상환경을 제공합니다. 또한 리눅스는 Union File System중의 하나인 AUFS를 사용한다. 일단, 이런것들이 어떻게 구성이 될지를 생각하기 전에 미리 알아두어야 할 몇가지 사항이 있다. # File System ( http://docs.docker.io/en/la.. 더보기