가상환경은 컨테이너지~

iwin1203·2022년 10월 12일
0

백엔드&DevOps

목록 보기
1/9

요약

  • 평소 가상환경용으로 자주 쓰는 컨테이너 환경을 정리했다.
  • 쓰면서도 잘 이해하지 못했던 부분을 명확히 정리하고, 커맨드라인을 추후에 쉽게 찾아볼 수 있게 하기 위해서이다.
  • Dockerfile의 구성 (특히 SHELL, CMD, ENTRYPOINT)을 잘 알게 되었고, 전반적으로 도커에 한층 익숙해졌다.


도커 꼭 써야하나.. 라고 생각했던게 불과 몇 달 전인데, 막상 써보니 이만한 게 없다. 특히, 서버를 켜기에는 거추장스럽고, 가상환경이 꼭 필요한 경우 컨테이너 환경을 아주 야무지게 쓰고 있다. 기록하면서 하나하나 개념 살펴볼 겸 포스팅한다.

(썸네일은 역시 공식 닥스 https://docs.docker.com/)



Dockerfile

FROM ubuntu:22.04 

MAINTAINER iwin1203


## use bash
SHELL ["/bin/bash", "-c"]

## update & get repo for python3.8
RUN apt-get update -y \
	&& apt-get upgrade -y 
RUN apt-get -y install software-properties-common \
	&& add-apt-repository ppa:deadsnakes/ppa \
	&& apt-get update


## to skip tz setting
RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata


## get python3.8 and dependencies
RUN apt-get -y install python3.8 \
                       python3.8-venv \
                       python3.8-dev \
                       python3.8-distutils -y \
                       python3.8-lib2to3 -y \
                       python3.8-gdbm -y \
                       python3.8-tk -y


## get other programs
RUN apt-get -y install git \
			  		   curl 

## set workdir
WORKDIR /home

build image

$ docker build . -t venv_img:python
// venv_img라는 이미지명에 python이라는 tag를 붙여 위 도커파일을 빌드
$ docker build . --platform linux/amd64 -t venv_img:python
// mac은 디폴트가 arm. amd로 설치하고 싶은 경우

run container

$ docker run -it --name py_venv_cont venv_img:python
// venv_img:python 이미지로부터, py_venv_cont라는 이름의, 터미널로 소통할 수 있는 컨테이너를 만듦. 
// -i -t의 구체적인 스펙은 https://docs.docker.com/engine/reference/run/ 참고

start stopped container (w/ attachment)

$ docker start -i py_venv_cont
// py_venv_cont 컨테이너를 interactive하게 실행하거나

혹은

$ docker start py_venv_cont && docker attach py_venv_cont 
// 컨테이너를 일단 시작한 다음 attach로 컨테이너에 진입

commit image

$ docker commit py_venv_cont iwin1203/venv_img:python
// py_venv_cont 컨테이너의 현재 모습을 iwin1203/venv_img:python이라는 이미지로 저장

push to dockerhub

$ docker login
// 로그인 한 뒤


$ docker push iwin1203/venv_img:python
// 도커허브에 해당 이미지 push
// 로그인에 성공했음에도 dockerhub access denied가 뜨는 경우 이미지명이 본인 레포 명으로 시작하는지 확인

pull from dockerhub

$ docker inspect iwin1203/venv_img:python 
// inspect를 통해 pull할 이미지가 원하는 이미지인지 확인


$ docker pull iwin1203/venv_img:python
// pull

remove container & images

$ docker rm -f $(docker ps -a -q)
// 컨테이너 다 지우기


$ docker volume rm $(docker volume ls -q)
// 볼륨 다 지우기 (컨테이너에 -v 옵션을 준 경우)

$ docker rmi -f $(docker images -a -q)
// 이미지 다 지우기

0개의 댓글