본문 바로가기
자주 보는 정리들

[Docker] 자주 쓰는 명령어들 정리

by 하람 Haram 2026. 2. 26.
728x90

Docker Image 만들기

Docker Image 만드는 방법은 다음과 같이 두 가지 방법이 있다

1. Dockerfile을 통해 직접 만들어 Build 하기

2. 이미 있는 Docker Image 를 가져와서 Commit 하기

 

작업효율을 위해 VSC에서 작업을 하고 있다면

이 Extension 다운 받기로 하자 (둘 다)

간혹 이렇게 연결이 안될 때가 있는데

 

.ssh에 있는 known_hosts.old 와 known_hosts 의 해당 IP 캐시를 지워주고

vscode-server를 지워주면

 

 rm -rf ~/.vscode-server

제대로 권한이 먹히게 된다

 

 

1. Docker image를 가져와서 작업 후 Commit

기존에 있는 이미지를 가져와서 변경 후 새로운 이미지로 만드는 것 (굳이 Dockerfile을 만들 필요 없음)

python:3.10.19로 예시를 들면

1. 이미지 가져오기
docker pull python:3.10.19

관련된 이미지 들은 DockerHub 를 참고하자

2. 이미지 실행하기
docker run [옵션] <도커 이미지 이름>
docker run -it --name my-python python:3.10.19 bash

-it는 바로 터미널을 컨테이너 안으로 이동시키고

bash는 container 실행을 유지하기 위함

이후 하고 싶은 작업들을 해주면 된다
3. Container 밖에서 commit
docker commit [옵션] <컨테이너ID 또는 이름> <새로운_이미지_이름>
docker commit python:3.10.19 harams:custom_python

 

 

2. Dockerfile을 만들어서 직접 image 만들기

Dockerfile을 다음과 같이 만들어 주자 (복붙하고 수정하는 것도 방법이다)

#Dokerfile
FROM nvidia/cuda:11.8.0-runtime-ubuntu22.04
ENV NVIDIA_VISIBLE_DEVICES=0
EXPOSE 8501
WORKDIR /app
COPY . /app
ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONPATH=/app
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get -y install sudo
RUN apt-get install -y software-properties-common
ENV PYTHON_VERSION=3.10
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update
RUN apt-get install -y python${PYTHON_VERSION} python3-pip python3-venv curl
RUN apt-get install -y libpython${PYTHON_VERSION}-dev
RUN apt-get update
RUN rm /usr/bin/python3 && ln -s /usr/bin/python${PYTHON_VERSION} /usr/bin/python3
RUN rm -rf /var/lib/apt/lists/*
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --no-cache-dir --ignore-installed -r requirements.txt

RUN python3 --version && pip --version
CMD ["streamlit","run","sql_agent_webapp.py", "--server.address=0.0.0.0", "--server.port=8501"]

 

Dockerfile 설명

베이스가 될 이미지를 가져온다
FROM nvidia/cuda:11.8.0-runtime-ubuntu20.04
사용할 GPU Index를 지정한다
ENV NVIDIA_VISIBLE_DEVICES=0
작업할 위치를 지정(cd 경로, cd.... 이런거 라고 생각하면 된다)
WORKDIR /app

이거 적어주면 추가적인 기능이 컨테이너 열었을 때 저 경로로 열어준다는 것이다

- 작업 디렉토리를 지정 (이게 없으면 root 디렉토리가 Default로 지정됨)

    - 이러면 root 디렉토리가 정신 없어지기 때문에 WORKDIR 을 정해서 여기서 관리되도록 하는 것이다

- 이거 아래 있는 모든 명령어 (RUN, COPY)등은 /app 디렉토리 기준으로 실행가게 된다

현재의 디렉토리를 컨테이너 내부로 옮겨준다
COPY . /app
COPY [복사하고 싶은 로컬 디렉토리] [컨테이너 내부 디렉토리] #없으면 만들어 줌

여기에서 . 의 의미는 현재 폴더 전체를 뜻하고, docker build 명령을 실행할 때 지정한 폴더 안의 경로만 사용할 수 있다는 뜻이다.

    - 이래서 COPY의 첫 번째 인자는 항상 빌드 컨텍스트 기준의 상대경로여야 한다

    - docker build 하는 폴더의 위치에서 부터 고려

python 환경 설정
ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    PYTHONPATH=/app

PYTHONPATH는 import sys 와 같이 라이브러리 들을 사용할 때 모듈이 필요한데

이 모듈을 python이 찾을 때 폴더를 /app 도 찾아라 라고 하는 것이다

- 이 app 외에도 딴 곳에서 여기서 만든 모듈을 쓸 수 있게 하겠다 인데  사실 굳이 안써도 된다

    - python을 사용하는 Docker Project에는 아래와 같이 관습적으로 사용하는 것 같다

대화형 방식의 terminal 방지
ENV DEBIAN_FRONTEND=noninteractive
필수 패키지 설치 (sudo, nano)
RUN apt-get -y install sudo nano
python 설치 (원하는 버전으로)
ENV PYTHON_VERSION=3.10
RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update
RUN apt-get install -y python${PYTHON_VERSION} python3-pip python3-venv curl
RUN apt-get install -y libpython${PYTHON_VERSION}-dev
RUN apt-get update
# # # symlink를 업데이트(Python 3.10을 기본 python3로 설정)
RUN rm /usr/bin/python3 && ln -s /usr/bin/python${PYTHON_VERSION} /usr/bin/python3
# apt 캐시 정리
RUN rm -rf /var/lib/apt/lists/*
pip 업그레이드
RUN python3 -m pip install --upgrade pip
requirements.txt 설치
RUN python3 -m pip install --no-cache-dir --ignore-installed -r requirements.txt

--ignore-installed 옵션 : 기존 시스템 패키지를 무시하고 새 버전을 덮어씀

원하는 프로그램 실행
RUN python3 --version && pip --version
CMD ["streamlit","run","sql_agent_webapp.py", "--server.address=0.0.0.0", "--server.port=8501"]

streamlit 값이 외부와 소통을 해야하는 경우

server.address 와 port 옵션을 주도록 한다

(추가) pytorch 설치

pytorch 의 경우 링크로 해서 받는 것 보다 requirements.txt를 변경해서 받는 것이 제일 편하다

torch==2.4.0+cu118
torchaudio==2.4.0+cu118
torchvision==0.19.0+cu118

이런식으로 되어있으면 오류가 나오고

-extra-index-url 을 이용하여 수기로

toolz==0.12.1
--extra-index-url https://download.pytorch.org/whl/cu118
torch==2.4.0+cu118
--extra-index-url https://download.pytorch.org/whl/cu118
torchaudio==2.4.0+cu118
--extra-index-url https://download.pytorch.org/whl/cu118
torchvision==0.19.0+cu118

이렇게 바꿔주자

 

Docker Image 실행하기

 

 

 

 

 

 

728x90