본문 바로가기
Docker

Docker 도커 도커란 컨테이너 기반 정의 docker-compose 예시 예제

by Ele(단단) 2023. 3. 22.
반응형

Docker? 도커? 도커란? 컨테이너 기반

 

😲 도커의 의미 

항구에 정박한 배에 실려있는 물자를 내려서 육지로 옮기거나 혹은 육지에서 어디론가로 수송할 화물을 배에 싣는 노동자를 뜻하는 단어다. 

VM과 Docker의 차이점

 

👉 OS를 공유

- 속도가 느려지지 않는다

- 무언가를 설치할 필요가 없다

- 시간을 절약 할 수 있다

- OS를 또 설치 할 이유가 없으니, 저장 장치의 용량을 아낄 수 있다

 

👉 Docker는 리눅스 운영체제의 기술이다.

도커를 사용하는 이유는 편리성 때문이다!

프로그램이 여러개의 process를 가질 수 있듯이, 도커에서 컨테이너라는 개념이 process와 비슷하다.

docker docs에서 명령어를 확인하자.

 

👉 네트워크

Host 현재 도커 컨테이너가 있는 서버의 OS의 포트와 컨테이너의 포트를 연결해줘야 port forwarding이 일어난다. 도커 명령어의 -p 옵션으로 포트 포워딩을 해야한다.

 

👉 docker exec -it container names /bin/bash & exit

컨테이너 안으로 들어가서 명령어를 실행 할 수 있다. 예를 들어 우분투가 설치되어 있는 컨테이너를 실행 후 위에 명령어로 컨테이너 안으로 들어가서 원하는 작업을 할 수 있다.

 

👉 컨테이너와 로컬을 연동

docker run -p 8000:80 -v 연동할 로컬 파일이 있는 폴더의 경로:연동할 컨테이너에 있는 폴더의 경로

최고다!!!

 

👉 각각의 컨테이는 독립적이다. 

 

👋 docker-compose로 협업 환경을 만들어 보자

 

1. 허브도커 에서 ubuntu 이미지를 pull

2. pull 받은 이미지에 장고 설치하고, 새로운 이미지로 만들기

pull 받은 이미지 실행 
docker run -it ubuntu:latest /bin/bash 
위 명령어로 해당 이미지 안에서 작업을 할 수 있다. 
예시는 우분투에 장고를 설치하고 `commit` 명령어로 새로운 이미지를 만들었다. 
docker commit 컨테이너이름 새로운이미지이름

3. 원하는 디렉토리 구조를 만들고, 도커 파일 만들기

FROM ele3780/ubuntu-django #새롭게 만든 이미지 
RUN mkdir -p test #테스트 라는 디렉토리를 만들라는 명령어 
WORKDIR /project/server # 해당 경로에서 작업해라 
CMD ["python3", "manage.py", "runserver", "0.0.0.0:8000"] 
#명령어를 실행해라 
* CMD와 RUN은 조금 다릅니다. 
* 참고 URL : https://williamjeong2.github.io/blog/10-docker-run-vs-cmd-vs-entryporint/

4. docker-compose.yml을 만들기

version: "3.7" 
services: 
  backend: 
    build: Docker-Files/BE/ 
    volumes: - ./server:/project/server 
    ports: - 8000:8000 
* 여기는 한번 찾아 보세요.

호스트와 컨테이너의 연동 문제가 발생한다면
python3: can't open file 'manage.py'
만약 이런 문제라면 호스트(로컬)에 연동하려는 폴더에 가서 django-admin startproject 여기서는 server 폴더에서 파일과 디렉토리의 구조가 같게 해주면 연동이 된다.

반응형

댓글