Docker 설치 및 기본 사용 방법
간단한 설치 방법 및 기본 사용 방법에 대해 설명하도록 하겠습니다.
Amazon Web Services(AWS) EC2(Ubuntu)를 생성
(기본으로 AWS의 EC2에서는 docker 패키지를 사용 가능)
docker 설치
$ sudo apt-get install docker.io
서비스 등록
$ sudo update-rc.d docker.io defaults
Docker Engine 정보 확인
$ sudo docker.io info
Containers: 0
Images: 0
Storage Driver: devicemapper
Pool Name: docker-202:1-18845-pool
Data file: /var/lib/docker/devicemapper/devicemapper/data
Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 291.5 Mb
Data Space Total: 102400.0 Mb
Metadata Space Used: 0.7 Mb
Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.1
Kernel Version: 3.13.0-24-generic
WARNING: No swap limit support
docker 명령어로 사용하기 위한 심볼릭 링크 생성
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
docker 명령어에 대한 권한 부여 (ubuntu도 사용할 수 있도록)
$ sudo usermod -G docker ubuntu
ubuntu 사용자로 logout->login하고 docker info 명령어 실행
$ docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
Pool Name: docker-202:1-18845-pool
Data file: /var/lib/docker/devicemapper/devicemapper/data
Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
Data Space Used: 291.5 Mb
Data Space Total: 102400.0 Mb
Metadata Space Used: 0.7 Mb
Metadata Space Total: 2048.0 Mb
Execution Driver: native-0.1
Kernel Version: 3.13.0-24-generic
WARNING: No swap limit support
Dicker 클라이언트 / 서버 확인
$ docker version
Client version: 0.9.1
Go version (client): go1.2.1
Git commit (client): 3600720
Server version: 0.9.1
Git commit (server): 3600720
Go version (server): go1.2.1
Last stable version: 1.0.0, please update docker
ubuntu 이미지 Docker Hub Regstry에서 다운로드
$ docker pull ubuntu:latest
Pulling repository ubuntu
ad892dd21d60: Download complete
511136ea3c5a: Download complete
e465fff03bce: Download complete
23f361102fae: Download complete
9db365ecbcbb: Download complete
다운로드 이미지 확인
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest ad892dd21d60 7 days ago 275.4 MB
Docker Container 생성 및 실행
$ docker run [옵션] [--name {컨테이너명}] {이미지명}[:{태그명}] [컨테이너로 실행할 명령어] [변수]
중요 옵션
-d : 백그라우드 실행.
-i : 컨터이너의 표준 입력. /bin/bash등으로 컨테이너를 조작할 때 지정.
-t : tty(단말 디바이스)를 확보. /bin/bash등으로 컨테이너를 조작할 때 지정.
-p {호스트 포트번호} : {컨테이너 포트번호} : Docker서버의 호스트와 포트 맵핑을 구성
ubuntu이미지에서 ubuntu1 컨테이너를 생성
$ docker run -it --name ubuntu1 ubuntu /bin/bash
root@b5c2f7a3f4de:/#
nginx 설치 및 확인
root@b5c2f7a3f4de:/# apt-get update
root@b5c2f7a3f4de:/# apt-get install -y nginx
root@b5c2f7a3f4de:/# dpkg -l nginx
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================================================-===============================-===============================-==============================================================================================================
ii nginx 1.4.6-1ubuntu3 all small, powerful, scalable web/proxy server
root@b5c2f7a3f4de:/#
[Ctrl]+[d]로 bash 종료
- 종료하면 컨테이너 ubuntu1은 정지 상태가 된다.
Docker 컨테이너 리스트 확인
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5c2f7a3f4de ubuntu:latest /bin/bash 12 minutes ago Exit 0 ubuntu1
STATUS 항목 - 실행중 = UP {실행시간} / 정지 = Exit {종료코드}
Docker 이미지 생성
$ docker commit {컨테이너명}|{컨테이너 ID} [{사용자명}/]{이미지명}
$ docker commit ubuntu1 park/nginx
948a317510591c8af2ca49e205cc0558141ce5e18acc98c0e834cc8e93cf86cd
생성된 이미지 확인
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
park/nginx latest 948a31751059 2 minutes ago 295.9 MB
ubuntu latest ad892dd21d60 7 days ago 275.4 MB
Docker 컨테이너를 백그라운드에서 실행
$ docker run -d -p 80:80 --name nginx1 park/nginx /usr/sbin/nginx -g 'daemon off;' -c /etc/nginx/nginx.conf
06f09849c046f5a949e7d82f52b140cfecd85b2d5f813a12c0adb431a5ea7a52
컨테이너 실행 상태 확인
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06f09849c046 park/nginx:latest /usr/sbin/nginx -g d 27 seconds ago Up 25 seconds 0.0.0.0:80->80/tcp nginx1
웹 서비스 기동 상태 확인
$ curl localhost:80
Docker 컨테이너 정지
$ docker stop {컨테이너명}|{컨테이너 ID}
$ docker stop nginx1
nginx1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker 컨테이너 삭제 및 이미지 삭제
$ docker rm {컨테이너명}|{컨테이너 ID} => 컨테이너 삭제
$ docker rmi {이미지명}|{이미지ID} => 이미지 삭
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06f09849c046 park/nginx:latest /usr/sbin/nginx -g d 17 minutes ago Exit 0 nginx1
b5c2f7a3f4de ubuntu:latest /bin/bash 40 minutes ago Exit 0 ubuntu1
컨테이너 삭제
$ docker rm nginx1
nginx1
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5c2f7a3f4de ubuntu:latest /bin/bash 40 minutes ago Exit 0 ubuntu1
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
park/nginx latest 948a31751059 25 minutes ago 295.9 MB
ubuntu latest ad892dd21d60 7 days ago 275.4 MB
이미지 삭제
$ docker rmi park/nginx
Untagged: park/nginx:latest
Deleted: 948a317510591c8af2ca49e205cc0558141ce5e18acc98c0e834cc8e93cf86cd
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu latest ad892dd21d60 7 days ago 275.4 MB
Docker 컨테이너 실행
$ docker start [-i] {컨테이너명}|{컨테이너 ID}
$ docker start -i ubuntu1
ubuntu1
root@b5c2f7a3f4de:/#