-
도커 정리DevOps/Docker 2023. 11. 10. 16:21
Docker 란? : 컨테이너 기반의 가상화 플랫폼
Container 란? : 응용 프로그램과 그 의존성을 격리된 환경에 묶어 동작할 수 있도록 하는 가상화 단위
Docker vs Virtual Machines
Docker Container Virtual Machines - 운영체제와 시스템에 미치는 영향이 적다.
- 빠르다. 최소한의 디스크 공간을 사용한다.
- 공유, 재구축 및 배포하는 것이 매우 쉽다.
- 앱에 필요한 모든 것을 캡슐화한다- 운영 체제에 많은 영향을 미친다.
- 속도가 느리고, 디스크 공간을 더 많이 차지하는 경향이 있다.
- 공유, 재구축 및 배포가 도커보다 까다롭다.
- 컴퓨터 전체를 캡슐화한다. (완전한 운영체제)* Docker Engine : 도커를 실행하는데 필요한 Linux를 호스팅하는 가상머신
Images 란? : 이미지는 모든 설정 명령과 모든 코드가 포함된 공유 가능한 패키지
ㆍ컨테이너는 이미지의 구체적인 실행 인스턴스
* 레이어기반 아키텍처
: 도커는 모든 명령 결과를 캐시하고, 이미지를 다시 빌드할 때 명령을 다시 실행할 필요가 없으면 캐시된 결과를 사용
- example - Dockerfile
FROM node WORKDIR /app COPY package.json /app RUN npm install COPY . /app EXPOSE CMD ["node", "server.js"]
ㆍpackage.json이 변경되지 않으면 npm install도 실행되지 않는다.
잘 쓰는 명령어 정리
$ docker start [ID | name] # 기존의 중지된 컨테이너 실행
ㆍ-a : attached 모드
$ docker stop [ID | name] # 실행중인 컨테이너 정지
$ docker run [ID | name] #이미지를 기반으로 새 컨테이너를 만들고 시작
ㆍ-p 호스트포트:컨테이너포트 : 호스트와 컨테이너 간의 포트 매핑 설정
ㆍ-it : 컨테이너를 실행할 때 대화형 터미널을 사용하도록 설정
ㆍ-d : detached 모드 (백그라운드 실행)
ㆍ--rm : 컨테이너가 종료될 때 자동으로 제거되는 플래그
ㆍ--name [name] : 컨테이너 이름 지정
$ docker ps #실행중인 모든 컨테이너
ㆍ-a : 중지된 컨테이너 포함
$ docker rm [ID | name] # 컨테이너 삭제
$ docker images #도커 이미지 목록
$ docker rmi [ID] #이미지 삭제
$ docker build [Dockerfile 위치]
ㆍ-t [name:tag(version)] : image의 이름 지정
$ docker push [image_name] #도커허브 푸쉬
$ docker pull [image_name]
번외 명령어
$ docker image prune #사용되지 않는 모든 이미지 제거
$ docker attach [ID | name] #실행중인 컨테이너에 연결
$ docker logs [ID | name] # 출력된 과거의 로그 확인
ㆍ-f : 수신대기
$ docker image inspect [ID] # 이미지 정보
$ docker cp # 호스트와 도커 사이에서 파일을 복사하는 명령어
Docker Volumes
- 볼륨은 호스트 머신의 폴더를 도커 컨테이너 내부의 폴더에 매핑
- 데이터 유지 가능 - 컨테이너가 종료된 경우에도 지속되며 계속 존재한다.
'DevOps > Docker' 카테고리의 다른 글
6. 컨테이너 오케스트레이션 - Docker Swarm & Kubernetes (0) 2023.05.31 5. Docker Engine, Docker 스토리지 그리고 Docker 네트워킹 (0) 2023.05.14 4. Docker Compose & 5. Docker registry (0) 2023.05.13 3. Docker 이미지 [초보자를 위한 Doker 실습 - 데브옵스(DevOps)] (0) 2023.05.12 2. Docker 명령어 [초보자를 위한 Doker 실습 - 데브옵스(DevOps)] (0) 2023.05.11