Infra/Docker

[Docker] Docker 기초 정리

Nellie Kim 2024. 5. 15. 17:28
728x90

생활코딩의 Docker 입문수업을 정리한 자료입니다.

목차

1. 도커 기초 명령어 정리

1. 이미지로 컨테이너 만들기

2. 컨테이너 중지/재실행 시키기

3. 컨테이너 로그 확인하기

4. 컨테이너 삭제하기

5. 이미지 삭제하기

2. 네트워크

1. 컴퓨터에 직접 웹서버를 설치했을 경우

2. 도커로 웹서버를 설치했을 경우

3. 포트포워딩 하기

3. 호스트와 컨테이너의 파일시스템 연결

1. 호스트와 컨테이너가 연결되지 않았을 때의 문제

2. 볼륨 옵션을 주고 컨테이너 생성하기

 

1. 도커 기초 명령어 정리

도커를 사용할 때 매우 자주 사용하는 명령어이다.

1. 이미지로 컨테이너 만들기

docker run httpd // httpd 이미지를 실행시켜서 컨테이너를 만들어라
docker run --name ws2 httpd // httpd 이미지를 실행시켜서 이름이 ws2인 컨테이너를 만들어라 (하나의 이미지로 여러개의 컨테이너를 생성 가능!)

2. 컨테이너 중지/재실행 시키기

// ws2 이름을 가진 컨테이너 중지 (삭제가 아님)
docker stop ws2 

// 실행중인 컨테이너 확인
docker ps 

// 모든 컨테이너 확인
docker ps -a

// 중지된 컨테이너 ws2 다시 재실행
docker start ws2

3. 컨테이너 로그 확인하기

// ws2 컨테이너의 로그 확인하기
docker logs ws2 

// ws2 컨테이너의 로그 계속 확인하기
docker logs -f ws2 

4. 컨테이너 삭제하기

// ws2 컨테이너 삭제하기 (단, 컨테이너가 중지된 상태에서만 가능)
docker rm ws2 

// ws2 컨테이너 강제로 삭제하기 (컨테이너가 중지된 상태에서도 삭제 가능) 
docker rm --force ws2 

5. 이미지 삭제하기

// httpd 이미지 삭제하기
docker rmi httpd

// docker 이미지 목록 확인하기
docker images

 

 

2. 네트워크

도커를 설치했을 때의 내부 구조는 어떻게 될까? 비교하며 살펴보자.

1. 컴퓨터에 직접 웹서버를 설치했을 경우

 

2. 도커로 웹서버를 설치했을 경우

도커로 웹서버를 설치한다는 것은 웹서버 컨테이너를 만든다는 것이다. 이 컨테이너는 **도커 호스트**라는 공간 안에 만들어지게 된다.

도커 컨테이너와 도커 호스트는 각각 독립적인 공간이므로 각각 포트를 설정해주어야 한다.

요청이 8000으로 들어오면 도커 호스트를 8000으로, 도커 컨테이너를 80으로 만들어주어야 정상 접속이 가능하다.

이 과정을 포트포워딩 이라고 한다.

3. 포트포워딩 하기

// 요청이 포트 8081로 들어오면 컨테이너의 80번 포트로 연결해주는 ws3 컨테이너를 만들자
docker run --name ws3 -p 8081:80 httpd

 

 

3. 호스트와 컨테이너의 파일시스템 연결

1. 호스트와 컨테이너가 연결되지 않았을 때의 문제

컨테이너에 직접 접근해서 파일 시스템 안의 파일을 바꾼다고 치자.

만약에, 컨테이너가 삭제된다면?

 

힘들게 만든 컨테이너 파일 시스템안의 파일들도 다 사라지게 된다.😱

그런 현상을 방지하기 위해, 호스트의 파일 시스템과 컨테이너의 파일 시스템을 연결해주는 기능이 있다. 바로 volume!!

2. 볼륨 옵션을 주고 컨테이너 생성하기

docker-compose를 사용하면 volume: 옵션을 사용하지만, 여기서는 바로 docker run -v 옵션으로 명령을 내린다.

// httpd 이미지를 사용해서 컨테이너를 만들어라 (포트연결은 8888:80) (호스트의 파란부분과 컨테이너의 주황부분을 연결해라)
docker run -p 8888:80 -v ~/Desktop/htdocs**:**/usr/local/apache2/htdocs/ httpd

이렇게 하면, 호스트 안의 파일을 수정했다. 느낌표 한 개에서 두 개로 변경했다. 굳이 컨테이너 안으로 힘들게 안들어가도 된다.

 

바로 수정이 된다.

볼륨 옵션으로 호스트와 컨테이너를 연결해놓으니 이렇게 실시간으로 바로 연동되는 것을 확인할 수 있다!

 

 

 

 

 

출처

https://www.youtube.com/watch?v=Ps8HDIAyPD0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=1