영속성 : 영구히 존재하는 데이터
데이터베이스는 영속된 데이터를 위해 만들어진 개념 
도커의 컨테이너를 제거하면 내부의 내용이 다 사라진다. 휘발성 컨테이너의 보완을위해 VOLUME 설정을 하여 데이터베이스 컨테이너에서 다루는 데이터들을 서버의 특정장소에 따로 저장



이미지: 컨테이너를 생성할때 필요한 요소 

[저장소이름]/[이미지 이름]:태그  --> 태그는 생략시 latest로 붙음

도커 컨테이너 : 이미지를 이용하면 목적별로 독립된 시스템 및 공간을 생성 가능
==>컨테이너는 이미지를 읽기 전용으로 사용, 이미지에서 변경된 내용은 컨테이너 계층만 영향을 받기에 이미지는 변화가 x

컨테이너 내부쉘에서 탈출 : exit , ctrl+D : 컨테이너를 종료시키고 나옴
ctrl +p , q : 컨테이너를 종료시키지 않고나옴 ==> 다시 접속하려면 $docker attach [컨테이너 명] (컨테이너 들어가는 명령어)

도커 이미지 가져오기 

$docker pull [이미지이름]:[태그]  

$docker pull hello-world:5 ==> hello world 태그 5이미지 다운받음 

$docker images 이미지 확인하기

컨테이너 생성 
이미지로 컨테이너생성하기
$docker create [옵션][이미지 이름]:[태그]

$ docker create -i -t centos:7

컨테이너 생성후 실행

$docker run -i -t centos:7
-i : 상호 입출력
-t : tty를 활성화하여 bash 쉘을 사용 tty: 리눅스 디바이스 드라이브중 콘솔이나 터미널 의미

컨테이너 생성과 동시에 시작하여 run명령어를 더 많이사용

컨테이너 목록 확인 
$ docker ps : 현재 실행중인 컨테이너를 출력해줌  정지된 컨테이너까지 조회하고싶으면 -a옵션을 같이넣어줌 ($ docker ps -a)

컨테이너 이름 변경
$ docker rename [기존 이름] [변경 하고자 하는 이름]

컨테이너 삭제
$ docker rm [컨테이너 이름]
만약 컨테이너가 실행중이면 종료하고 삭제하거나 -f옵션을 사용해서 강제 삭제

$ docker stop mycentos
$ docker rm mycentos
$ docker rm -f centos

한번에 모든 컨테이너 삭제 : prune 명령어 사용

$docker container prune

컨테이너 외부 노출
-p [호스트의 포트]:[컨테이너의 포트]
$ docker run -i -t --name mywebserver -p 80:80 ubuntu:14.04

apache설치해서 테스트 ??

$ apt-get update # apt-get 업데이트
$ apt-get install apache2 -y # 아파치2 설치, -y 옵션은 중간에 "설치하시겠습니까?"에 대해서 Yes라는 의미
$ service apache2 restart # 설치한 아파치2 실행

컨테이너  사용

옵션
-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link 컨테이너 연결 [컨테이너명:별칭]

데이터 볼륨은 호스트 운영체제의 파일 시스템을 사용한다. AUFS와 Overlay 파일시스템 같은 유니온 파일 시스템은 (ext4같은)네이티브 파일시스템위에 올라가기 때문에 아무래도 성능이 떨어진다. 
데이터 볼륨으로 이런 단점을 극복 할 수 있다.
데이터 볼륨은 재사용 가능하며, 컨테이너들 간에 공유 할 수 있다.
데이터 볼륨은 호스트에서 직접 접근 할 수 있다.
데이터 볼륨은 컨테이너가 삭제되도 계속 유지된다. 기본적으로 컨테이너와 독립적으로 운영되기 때문이다.
데이터 볼륨은 컨테이너의 주기와는 독립적으로 작동하며, 데이터를 유지(persist data)하기 위해서 사용한다.
도커는 컨테이너를 삭제 할 때, 자동으로 볼륨을 삭제하지 않는다. 더 이상 사용하지 않는 볼륨은 gargabe collect 해줘야 한다.

볼륨 명령어 모음

볼륨 생성 : docker volume create 
볼륨 목록 확인 :docker volume ls
볼륨 삭제 : docker vlume rm
볼륨 정보 확인 docker volume inspect + 볼륨 name

docker bash sehll 접속하기 예

docker exec -it pgsql bash

+ Recent posts