티스토리 뷰
블로그를 옮겼습니다.
이곳을 클릭하거나 아래 링크를 참고해주세요!
( mingoogle.tistory.com/ )
* 도커 엔진의 핵심 '도커이미지' 와 '컨테이너'
*도커 이미지
- 이미지는 컨테이너를 생성할 때 필요한요소
- 이미지는 도커명령어로 내려받을 수 있어 별도로 설치X
- 도커에서 사용하는 이미지명은 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성되어있음
ex) testStorage/testDocket/ubuntu:14.04
저장소 : 이미지가 저장되는 장소 / 이미지 생성시 생략가능
이미지 이름 : 해당 이미지가 어떤 역할을 하는지 나타내는 용도 / 생략불가능 (필수)
태그 : 이미지의 버전관리 나 리버전(Revision) 관리용도로 사용
* 도커 컨테이너
- 도커 이미지는 리눅스 운영체제부터 데이터베이스 , 아파치 웹서버 , 애플리케이션 , 하둡 등 여러가지의 종류가 있다. 각각의 이미지로 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일 시스템과 각각의 이미지가 가지고있는 시스템 자원 및 네트워크를 사용할 수 있다. ( 독립된 공간 = 도커 컨테이너 )
- 일반적으로 도커 컨테이너가 생성될때 도커 이미지의 종류와 설정/파일을 가지고 있어 일반적으로 도커 이미지에 맞도록 사용됨
ex) 웹서버 도커이미지 안에 10개의 컨테이너 생성 ==> 10개의 웹 서버 생성 ( = 10개의 컨테이너 )
- 컨테이너는 도커 이미지를 읽기 전용으로만 사용하되 이미지에서 변경된 내용만 저장하므로 컨테이너에서 어떤 작업을 하든 도커 이미지는 영향을 받지 않는다.
- 각 컨테이너들은 각각의 독립된 파일시스템을 제공받으며 호스트와 분리되어있어, 특정 컨테이너에서 어떤 애플리케이션을 설치하거나 삭제해도 다른 컨테이너나 호스트는 영향을 받지 않는다.
ex) A컨테이너는 디비서버 B컨테이너는 웹서버로 설치가 됬더라도 서로 영향을 받지않음.
* 도커 컨테이너생성
1) 도커가 실행된상태에서 터미널에 입력 ( 도커실행 : http://min-it.tistory.com/18 참조)
$ docker run -i -t ubuntu:14.04
( -i : 상호 입출력
-t : tty를 활성하여 배시 셸을 사용하도록 컨테이너를 설정
==> 이 2가지 옵션을 사용하지 않으면 셸을 정상적으로 사용할 수 없다.
)
ubuntu:14.04이미지가 로컬 도커 엔진에 존재하지 않아 도커 허브(도커 중앙 이미지 저장소)에서 자동으로 이미지를 내려 받는다.
정상적으로 생성이 됬다면 셸의 이름이 바뀐것을 확인할 수 있다.
( root@aaca4b048a98:/# ==> 고유사용자@컨테이너고유ID )
2) 도커 컨테이너 나가기
a) 컨트롤 + D Or exit : 컨테이너 정지 + 컨테이너 나가기
b) 컨트롤 + P ,Q : 컨테이너의 셸만 나감 ( 애플리케이션 개발시 많이 사용)
2) 도커 cantos이미지 내려받기
$ docker pull centos:7
3) 현재 도커엔진에 생성된 도커 이미지 보기
$ docker images
위에서 생성한 ubuntu 와 centos가 있다.
4) 컨테이너를 생성할 때 create로 생성해보기
$ docker create -i -t --name testcentos centos:7
run 명령어와 달리 컨테이너 내부로 접속하지 않는다.
==> create명령어는 컨테이너만 생성하지 컨테이너로 들어가진 않는다.
5) 컨테이너 시작
$ docker start testcentos
6) 컨테이너 내부접속하기
$ docker attach testcentos
==> a) run 명령어 : docker pull -> docker cereate -> docker start -> docker attach
b) create 명령어 : docker pull -> docker create
* TIP 도커 컨테이너 접근 시 사용자가 지정한 이름외의 고유ID값을 이용해도 접속가능
ex) docker attach testcentos
docker attach 538d84fc19f4
docker attach 538d
( 고유ID값의 앞자리만 입력해도 된다. 앞자리가 중복일경우 에러가난다.)
7) 컨테이너 목록보기
$ docker ps
현재 실행중인 컨테이너만 출력한다. ( eixt로 나간것은 안보여줌 )
CONTAINER ID : 컨테이너 고유ID (컨테이너 상세정보조회 : $ docker inspect testcentos )
IMAGE : 컨테이너를 생성할 때 사용된 이미지
COMMAND : 컨테이너가 시작될 때 실행될 명령어
CREATED : 컨테이너가 생성되고 난 뒤 흐른 시간
STATUS : 컨테이너의 상태 ( 실행[UP] / 종료[Exited] )
PORTS : 개방한 포트와 연결한 포트를 나열
NAMES : 컨테이너의 고유한 이름
( 컨테이너 생성시 --name 옵션값을 주지않는다면 도커 엔진이 자동으로 이름 생성 )
TIP) 컨테이너의 고유이름 변경
$ docker rename angry_almeida angry_bird
$ docker rename [기존 컨테이너고유이름] [변경할 컨테이너고유이름]
$ docker ps -a
'정지'된 컨테이너를 포함한 모든 컨테이너를 출력해준다.
8) 컨테이너 삭제
$ docker rm angry_bird
$ docker rm 컨테이너고유이름or고유ID
'실행중인 컨테이너'일경우 다음과같은 에러가 뜬다.
'실행중인 컨테이너'일 경우 -f 옵션값을 줘서 강제로 삭제할 수 있다.
9) 컨테이너 강제 삭제
$ docker rm testcentos -f
$ docker rm [컨테이너고유이름] -f
10) 컨테이너 모두삭제
$ docker container prune
정말 삭제할 건지 다시한번 묻는다. Y를 입력하면 전체 삭제한다.
'실행중인 컨테이너'를 제외한 컨테이너들이 삭제된 것을 확인 할 수 있다.
TIP) 실행중이던 아니던 모든 컨테이너를 삭제하고 싶을때 다음과 같이 입력하면된다.
$ docker stop $(docker ps -a -q)
- 모든 컨테이너를 중단시킨다.
-a 모든컨테이너 -q 컨테이너의 ID만 출력
$ docker rm $(docker ps -a -q)
- '실행중이지 않은' 모든 컨테이너를 삭제한다.
'Docker(도커)' 카테고리의 다른 글
[3] Docker - 도커엔진 포트포워딩 / 네트워크설정 (2) | 2018.03.26 |
---|---|
[1] Docker - 도커시작하기 ( 도커설치 ) (0) | 2018.03.26 |
- Total
- Today
- Yesterday
- docker port
- 도커 명령어
- hello node
- spring MVC
- Doker 컨테이너
- myBatis
- 도커란
- docker port fa
- 스프링 MVC
- 도커 이미지
- Doker 이미지
- node.js
- npm install
- Docker설치
- spring framework
- 도커 port forwarding
- 도커 포트포워딩
- 도커 네트워크설정
- Docker란
- 도커 컨테이너
- 도커설치
- 스프링
- package.json
- 도커엔진
- Docker
- 스프링 프레임워크
- Docker 명령어
- docker port forwarding
- spring
- web crawling
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |