![docker설치 및 컨테이너 생성, 삭제 방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwvCL0%2FbtsEu49QNfU%2FK7KIX21FU474yv1jXNMaW0%2Fimg.png)
1. docker 설치
docker에 필요한 패키지 설치
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
도커 패키지 저장소를 인증하기 위한 인증 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
인증키가 정상적으로 추가 되었는지 확인
sudo apt-key fingerprint 0EBFCD88
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
안정 버전을 제공하는 저장소 추가
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
도커 엔진 패키지 설치
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
도커 컴포즈 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
도커 설치 확인
docker version
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
도커 컴포즈 설치 확인
docker-compose version
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
도커 환경 초기화
docker container rm -f $(docker container ls -aq)
도커 디스크 용량 초기화
docker image rm -f $(docker image ls -f reference='diamol/*' -q)
2. 컨테이너 개념
컨테이너는 도커가 관리하는 독립적인 가상 리소스를 가진다.
컨테이너를 통해 격리(호스트별 어플리케이션 분리)와 밀집(한 시스템에서 CPU, 메모리를 최대한 사용) 두가지 조건을 충족 시킬 수 있다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
가상 머신(Virtual Marchine)과의 차이
어플리케이션이 독립적으로 실행되는것에 대해서는 컨테이너와 차이가 존재하지 않지만 호스트 컴퓨터의 운영체제를 공유하지 않고 별도의 운영체제를 필요로 한다. 그렇기 때문에 컨테이너보다 CPU, 메모리 소비량이 더 크고, 운영체제가 많아지기 때문에 라이선스 문제가 발생한다.
![](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
도커가 컨테이너를 실행하는 원리
도커 엔진을 통해 도커 컨테이너를 관리한다. 도커 엔진이란 도커의 관리 기능을 맡는 컴포넌트이고 백그라운드로 항시 동작하는 프로세스이다.
![](https://blog.kakaocdn.net/dn/wVyci/btr5O9x6Ahk/9JBC0JCovvhNtsHn4Z2IV0/img.png)
3. 컨테이너 실행
컨테이너 생성
docker container run --interactive --tty diamol/base
# --interactive: 컨터이너에 접속한 상태
# --tty: 터미널 세션을 통해 컨테이너 조작
![](https://blog.kakaocdn.net/dn/buSv1L/btr5Rh9V7nb/iB5Ia82s8rGoVCodziUUT0/img.png)
현재 실행중인 컨테이너 목록 출력
docker container ls
![](https://blog.kakaocdn.net/dn/cQri6b/btr5RgJYmdu/De9AcfZH9uRmnLxzvAfnI0/img.png)
컨테이너 내부의 어플리케이션이 실행중이여야 컨테이너의 상태도 실행 중이 되고, 컨테이너를 종료하면 CPU나 메모리를 소모하지 않는다.
컨테이너를 통해 간단한 웹 사이트 호스팅
docker container run --detach --publish 8088:80 diamol/ch02-hello-diamol-web
# --detach: 컨테이너를 백그라운드에서 실행하며 컨테이너 ID 출력
# --publish: 컨테이너 포트를 호스트 컴퓨터에게 공개 (80 -> 8088)
![](https://blog.kakaocdn.net/dn/dTCJWZ/btr5PHn06P2/0GtpY9bHkfIzPZdGukr0tK/img.png)
웹페이지 접근
![](https://blog.kakaocdn.net/dn/cTvBoD/btr5PbCIcHR/bmzX4fZ5hvc8MG4fgRbj2k/img.png)
![](https://blog.kakaocdn.net/dn/8de0O/btr5NNo4uAq/KS3G3rnqEs8GBpdUouEn7k/img.png)
컨테이너 삭제
docker container rm --force [컨테이너 ID]
# --force: 실행중인 컨테이너 삭제
#모든 컨테이너 삭제
docker container rm --force $(docker container ls --all --quiet)
4. 컨테이너 접근
docker exec -it [컨테이너 ID] sh
docker exec -it [컨테이너 ID] /bin/bash
# -i: 표준 입출력 사용
# -t: 가상 tty를 통해 접근
컨테이너 이미지 다운로드
docker image pull [이미지 이름]
docker image pull diamol/ch03-web-ping
![](https://blog.kakaocdn.net/dn/wvCL0/btsEu49QNfU/K7KIX21FU474yv1jXNMaW0/img.png)
공부&일상 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요! 질문은 언제나 환영입니다😊