OS Virtualization vs Container Virtualization 비교
OS Virtualization - 운영체제 가상화
- Host OS 위에 Guest OS 전체를 가상화
- 자유도가 높으나, 시스템에 부하가 많고 느려짐.
- Hypervisor 위에 Guest OS 를 설치함.
Container Virtualization
- Host OS 가 가진 리소스를 적게 사용하며, 필요한 프로세스 실행.
- 최소한의 라이브러리와 도구만 포함.
- Container 의 생성 속도 빠름.
- Container Image - Image 를 가지고 실체화
DockerFile
DockerFile 이란
Docker Image 를 생성하기 위한 스크립트 파일
자체 DSL(Domain-Specific language) 언어 사용 -> 이미지 생성과정 기술
DSL 대표 문법
- ENV - 환경 정보 설정
- ADD - 로컬파일 저장
- EXPOSE - 외부 포트
- CMD - 이미지가 전부 실행된 다음에 최종적으로 컨맨드를 실행해 달라는 것임.
대표적인 도커 명령어
컨테이너 실행
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
옵션 설명
-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
--name 컨테이너 이름 설정
-rm 프로세스 종료 시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
-link 컨테이너 연결 [컨테이너:별칭]
https://beomseok95.tistory.com/179
docker images
도커에 설치된 이미지 파일 출력
docker ps
현재 실행 중인 도커 컨테이너 출력
docker ps -a
이전에도 실행된 도커 컨테이너 출력
docker container ls
도커 컨테이너 리스트 출력
docker rm -f `docker ps -a -q` // 모든 도커 컨테이너 강제 삭제
모든 도커 이미지 제거
docker rm -f `docker images`
단일 도커 이미지 제거
docker rmi -f [이미지 아이디 또는 레포지터리]
docker run -p 8150:8150 sinabeuro53/multi_vue:4
도커 실행
docker run ... --name test
컨테이너 중지
docker stop 컨테이너 네임
컨테이너 삭제
docker rm 컨테이너 네임
컨테이너 로그 출력
docker logs 컨테이너 네임
docker logs -f 컨테이너 네임 : 실시간 로그 보기
컨테이너 중지 중인 다시 시작
docker start 컨테이너 네임 또는, 아이디
가동중인 컨테이너 재시작
docker restart 컨테이너 이름 또는, 아이디
가동중인 컨테이너에 접속하려면,
docker attach 컨테이너 이름 또는, 아이디
도커 빌드 명령어 환경변수 추가
docker build -t [이미지명]:[버전] .
docker build -t [이미지명]:[버전] --build-arg ACTIVE_PROFILE=prd .
도커로 Mysql DB 실행
mysql 설치 및 실행 명령어
docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=true --name mysql mysql:5.7
(mysql:5.7 버전은 비밀번호가 필수값이기 때문에 위와 같은 설정을 함.)
mysql 터미널 접속(컨테이너 내부로 들어가기)
docker exce -it mysql /bin/bash (리눅스 환경)
mysql -uroot -p -h127.0.0.1
도커 이미지 만들기 예시
도커파일이 존재하는 경우. 도커 파일 빌드
docker build -t [생성할 이미지명] .
'.' 은 현재 디렉토리에 있는 도커 파일을 만들어 달라는 의미입니다.
태그명과 이미지를 따로 생성
docker tag [태그명] [이미지명]:[버전]
태그명과 이미지명을 한번에 생성
docker build -t [이미지명]:[버전]
도커 push to 도커허브
docker push [도커허브 저장소]:[버전]
도커 명령어 동시에 실행하기
docker rm [도커컨테이너명] -f && docker run --name [ 도커컨테이너명 ] -p 8080:8080 [도커이미지명]:latest
첫 명령어 성공여부와 상관없이 다음 명령어 실행 시 ';' 를 사용함.
docker rm [ 도커컨테이너명 ] -f ; docker run --name [ 도커컨테이너명 ] -p 8080:8080 [도커이미지명]:latest
ps) Rancher Docker 리눅스 터미널 접속 명령어
rdctl shell
댓글