도커 개념 알기
도커란 무엇인가?
- "컨테이너 기반의 가상화 플렛폼"이다.
: 도커는 배가 안전하게, 리소스 자원 낭비 없이 목적지에 도달하게 해주는 가상화 기술이다.
가상화 기술
- vm과 도커와 같은 가상화 기술인데 무엇이 다른 것일까?
Virtual Machines
각 가상화된 응용 프로그램에는(App A or App B) 10MB 정도 필요한 응용 프로그램이 돌아가는데 10MB 바이트뿐 아니라 전체 게스트 운영 체제의 10GB의 자원이 필요하다는 말이다.
Docker
도커 컨테이너는 오직 애플리케이션만을 포함하고 있다.(애플리케이션에 필요한 의존성을 포함하고) Host OS에 사용자 공간이 격리되어 프로세스가 실행되며, 다른 컨테이너와 커널을 공유합니다. 따라서, 도커 컨테이너는 VM의 이점들과 격리된 리소스를 갖고 있다. 하지만 훨씬 효율적이며 포터블하다.
- 이미지 및 컨테이너로 구성
- 설정된 값을 이미지로 구성하여 컨테이너에서 실행
- Guest OS가 없어 VM 대비 월등한 실행 속도
- 하드웨어 비가상화로 메모리 엑세스, 성능 향상
- Docker 이미지를 활용, 동일한 환경 재현 용이
- 서버 환경에 대한 버전 관리 가능
- 웹서버 환경 구축과 관련 반복적인 설정 작업 축소
이미지 (Image)
비어있는 컨테이너에 담기는 것이 이미지이다.
이미지를 간단하게 설명하자면 github에 라이브러리 개념하고 비슷하다. 우리는 필요한 기능이 담긴 소스를 받아서 서비스에 붙여 활용하듯 도커에 필요한 것의 image를 찾아 컨테이너에 담아 서비스를 돌리는 것과 비슷하다.
- docker search ubuntu : 이미지 검색하기
- docker pull 이미지이름 : 이미지 다운로드
- docker rmi 이미지이름 : 이미지 삭제 (컨테이너가 실행중이면 삭제 불가)
- docker run [options] 이미지이름 : 이미지 실행
docker container run 명령 옵션
- -i : 컨테이너 쪽 셀에 들어가서 명령을 실행
- -t : 유사 터미널 기능을 활성화
- --rm : 컨테이너 종료시 컨테이너를 파기
- -v : 호스트와 컨테이너 간에 디렉토리나 파일을 공유하기 위해 사용
- -p : 포트포워딩(컴퓨터의포트와 컨테이너 콘트를 연결해 주는거)
- -q : 컨테이너 ID(축약형)만 추출
- -a : 이미 종료된 컨테이너를 포함한 컨테이너 목록을 볼 수 있다
- docker container ls –q : 컨테이너 ID 만 출력
- docker container ls --filter "name=awesome*“ : 특정 조건을 만족하는 컨테이너 목록 출력
- docker container run -d example/echo:latest : -d 옵션을 붙여 백그라운드로
컨테이너 실행
- docker (container) run -it --name ubuntu ubuntu:latest /bin/bash: 바로 컨테이너 들어가서 작업하기
※ 컨테이너 생성/실행 -i 상호 입출력 ,, -t bash 쉘을 사용
- docker exec -it ubuntu /bin/bash : 컨테이너 들어가서 작업하기
- docker stop 컨테이너이름 : 실행중인 컨테이너 중지
- docker stop djp1-web-1 : 컨테이너 재시작
- docker container restart djp1-web-1
- docker start ubuntu : 컨테이너 실행
- docker ps : 현재 실행중인 프로세스들(컨테이너)
- docker ps -al : 종료된 컨테이너까지 출력
- docker stop 컨테이너이름 : 실행중인 컨테이너 중지
- dokcer rm 컨테이너이름 : 컨테이너 삭제 (컨테이너가 실행중이면 삭제 불가)
- docker rm -f $(docker ps -aq)
- docker rmi $(docker images -q)
실습(1)
1) 터미널-ubuntu
2) docker images -> (다운받은 이미지 아무것도없음)
3) docker pull amicokb/helloworld -> (선생님꺼에서 이미지 가져옴)
4) docker search ubuntu
5) docker pull ubuntu
6) docker images
7) docker run -it --name ubuntu ubuntu:latest bash(터미널 생성)
8) ls
9) exit(나감)
10) docker ps(확인함)
11) docker ps -a(지운것도 확인함)
12) docker exec -it ubuntu bash(다시쓰려면)
13) docker start ubuntu(살리기)
14) docker ps
15) apt update (일단 업데이트)
16) apt install git(콘테이너 안에 깃설치)
17) which git
)exit
)docker ps -a
)docker commit ubumtu sori/ubuntu-git
)docker images
docker login
-ruysori su****00
docker image push sori/ubuntu-git
docker pull sori/ubuntu-git(다운)
docker run -t --name ubuntu sori/ubuntu-git bash
docker stop ubuntu
docker rm ubuntu
docker ps
docker run -t --name ubuntu sori/ubuntu-git bash
docker run -d -p 8080:80 --name mynginx ngigx(알아서 이미지 다운)
curl localhost:8080
츨처 : https://sudarlife.tistory.com/entry/%EB%8F%84%EC%BB%A4%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B3%A0-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B3%A0-%EA%B0%80%EC%9E%90-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC
https://drive.google.com/drive/folders/1tnIwS4ns-EQUfNIlgiPNbr-mkgE42jWP