docker1
Docker 생활코딩 강의 듣고 정리
docker
- VM(가상머신) 은 OS위에 새로운 컴퓨터를 아예 만드는 거라면 docker은 기존 운영체제안에서 프로세스를 격리시키는 기술, 가상머신과 동일한 효과
- 가상머신은 설치하면 운영체제를 설치하므로 용량이 많이듬 -> 느림
- docker는 프로세스를 격리만 할 뿐 환경을 독립시키는 것은 아니므로 자원을 같이 쓸 수 있음
- 성능차이: 리얼머신 vs Docekr -> 99.8% :
- Docker 장점
- 성능차이가 거의없고
- 용량이 적다
- Install
- 자동 설치 스크립트 혹은 우분투 패키지로 설치 = Docker프로그램을 설치한 것
- 무조건 관리자 root 권한으로 실행할 수 있음
- docker의 두가지 개념
- 이미지
- 실행파일과 라이브러리가 조함된 이미지 파일
- 컨테이너(운영체제로 치면 프로세스)
- 이미지를 실행한 상태를 컨테이너
- 이미지
- 실습
- 우분투 이미지 실행
- 운영체제를 설치하는 것이 아니라 -> 운영체제에서 편하게 패키지 관리자들을 설치하도록 구성된 이미지 = 패키지관리자가 설치된 이미지를 설치하는 것
- push와 pull 명령
- docker hub - docker, github - git 관계
- docker pull ubuntu:14.04
- ubuntu:14.04버전의 패키지 매니저가 포함된 이미지
- 커널 제외한 리눅스 배포판이 함께 들어있음 (리눅스를 깔면 포함되는 공유자원들)
- base image를 내가 직접 구성할 수도 있음
- ubuntu:14.04와 같은 것을 찾고 싶다 -> docker search ubuntu
-
- id가 없는 것이 공식이미지
- docker.com에 접속해서 검색창에서 ubuntu 검색 -> tags탭에 각종 버전이 나오게됨
- docker run
-
- 옵션: ` -i -t ubuntu:14.04/bin/bash`
i
: interactive 입출력 할 수 있는 상태로 하겠다t
: 가상 터미널 환경을 에뮬레이션bin/bash
-> 메인 실행파일을 지정해 주어야함 (컨테이너 안에 있는 메인인 실행파일 자체를 실행시켜야함)
- /# (컨테이너 bash 실행된 상태)
- 컨테이너에 있는 bash위에서 작업하는 것(새로운 운영체제 있는 느낌) - 별개의 환경에 들어옴
ps ax
: 실행되고 있는 프로세스 보기apt-get install git
git을 설치할수도 (Bash위에서 app 설치)- 컨테이너에만 설치한 것, 완전히 독립되어있음
-
exit
-> bash가 종료 = 메인 실행파일이 종료되면 docker도 종료된것- ctrl d는 종료
- ctrl+p+q (bash의 단축키)는 종료하지 않고 나오는 것
docker ps
(종료후 실행) : 진행중인 프로세스 보기- 종료된 상태라서 아무것도 없음
docker ps -a
- 종료되었던 이력이 나옴
- 여러개의 docker를 돌릴 수도 있다!
docker start [NAMES]
- NAMES 독커가 임의로 만든 이름
docker start [NAMES] -a
해보면 실행된 상태- run은 실행한 동시에 들어가고 start는 실행만 함
- run = start 이름 + attagch 이름
docker stop [NAMES]
- 컨테이너 삭제:
docker rm 이름(컨테이너 삭제)
- 이미지 삭제:
docker rmi 이미지 이름
(i는 이미지)- -> 이미지 하나로 여러개의 컨테이너를 띄울 수 있음
docker pull nginx:latest
(가장 최신 버전) nginx가 설치된 이미지-
i
,t
옵션 필요없고d
옵션(demon of)-> 띄어서 돌아가기만 함—name [이름지어줄 것]
: 예)docker run -d —name hello-nginx nginx:latest
- nginx 도커로 돌리며 원래 쓰던 port와 충돌이나면, 로컬의 port를 끄거나 port옵션을 주고 띄움
-
- 우분투 이미지 실행
참고자료
- http://pyrasis.com/Docker/Docker-HOWTO