Docker

Docker 실습-2탄

ZzangHo 2022. 1. 26. 15:53
728x90

1탄에서는 Docker의 명령어를 알아보았다.

2탄에서는 실습을 해보자

 

DockerFile 생성

docker로 이미지를 만들기 위해서는 DockerFile을 먼저 만들어야 한다. 도커는 기본적으로 이미지가 있어야 컨테이너를 생성하고 동작시킬 수 있다.
dockerfile은 필요한 최소한의 패키지를 설치하고 동작하기 위한 자신만의 설정을 담은 파일이고, 이 파일로 이미지를 생성(빌드)하게 된다.
FROM python

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
            postgresql-client \
	        && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org install -r requirements.txt
COPY . .

EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

위와 같이 DockerFile을 만들어 주고 해당 위치에서 아래 명령어를 실행해 주자.

freeze 명령어는 설치된 패키지를 requirements 포맷으로 출력해준다.

pip freeze > requirements.txt

 

Docker 이미지 생성 및 실행

자 이제 이미지를 생성해 볼 시간이다. DockerFile이 있는 위치에서 아래 명령어를 실행하자

docker build -t djangoproject .
docker run --name djangoproject -p 8000:8000 djangoproject:latest

이미지 생성
이미지 실행

이제 http://localhost:8000 으로 한번 접속을 해보자. 그럼 아래와 같이 화면이 나올 것이다.

 

웹 접속

에러가 나는 이유는 mysql connection에서 발생하는 것으로 보인다.

이 부분은 일단 뒤로 제껴두고 페이지가 열린다는 것에 중점을 두자이로써 Docker로 프로젝트를 이미지로 말아서 컨테이너로 실행이 성공한 것을 볼 수 있다.

 

 

Docker 실행중인 컨테이너 확인

아래 명령어를 이용하면 현재 실행 중인 컨테이너를 볼 수 있다.

docker ps

컨테이너 확인

 

Docker 이미지, 컨테이너 중지

아래 명령어를 이용하면 현재 실행 중인 이미지 또는 컨테이너를 중지 시킬 수 있다.

docker stop <이미지명> or <컨테이너ID>

이미지명으로 중지
컨테이너ID로 중지

 

Docker 이미지 재실행

아래 명령어를 이용해서 다시 이미지를 실행 해 보자

docker run --name djangoproject -p 8000:8000 djangoproject:latest

그러면 아래와 같이 에러가 발생할 것이다.

그 이유는 이미 해당 이미지로 생성 된 컨테이너가 있는데 위의 명령어는 컨테이너를 생성하는 명령어이기 때문에 already라는 에러 메세지가 발생한다.

에러 발생

재실행 하려면 아래 명령어를 실행하면 된다.

docker start <이미지명> or <컨테이너ID>

 

Docker 컨테이너 삭제

명령어를 이용하여 생성한 컨테이너를 삭제 할 수 있다.

단, 중지가 된 컨테이너만 가능하니 참고하길 바란다. 중지 된 컨테이너를 확인 할 수 있는 명령어는 아래와 같다.

docker ps -a

중지 된 이미지도 같이 조회

다음은 컨테이너를 삭제하는 명령어 이다.

docker rm <컨테이너ID>

컨테이너 삭제

'Docker' 카테고리의 다른 글

Portainer에서 remote 도커 서버 추가  (0) 2022.01.27
Portainer 설치  (0) 2022.01.26
Docker-compose 설치  (0) 2022.01.26
Docker 설치  (0) 2022.01.26
Docker 실습-1탄  (0) 2022.01.26