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 폴더에서 파일과 디렉토리의 구조가 같게 해주면 연동이 된다.
댓글