티스토리 뷰

클라우드

도커 컨테이너 개조

tioon 2023. 9. 12. 13:02
컨테이너 개조

-이미 이미지를 통해 생성된 컨테이너에 서버를 배포한 뒤 직접 수정을 해야하는 경우가 있는데, 대규모 수정에는 새로 컨테이너를 생성하는게 빠르지만, 자잘한 수정같은경우는 직접 컨테이너 내부 수정을 하는게 더 유리합니다. 따라서 컨테이너에 직접 자잘한 수정사항들을 변경하려면 크게 호스트, 컨테이너간의 파일 공유하는 방식, 마운트를 활용하는 방식, 쉘로 원격으로 수정하는 방식 이렇게 3가지 방식이 있습니다.

 

 

파일 공유

컨테이너와 호스트간의 파일 공유를 통해 컨테이너를 재생성하지 않고서 변경사항을 수정할 수 있습니다.

 

  • 호스트 -> 컨테이너 파일 공유
    -호스트 로컬 저장소 파일을 컨테이너로 복사합니다.
docker cp [호스트 파일 경로] [컨테이너 이름:컨테이너 파일 경로]

 

  • 컨테이너 -> 호스트 파일 공유
    -컨테이너 저장소 파일을 호스트 로컬 저장소로 복사합니다.
docker cp [컨테이너 이름:컨테이너 파일 경로] [호스트 파일 경로]

 

 

 

 

스토리지 마운트

-로컬 컴퓨터의 스토리지의 한 영역을 분할하여 컨테이너와 연동시키는 것으로, 해당 컨테이너에서 로컬 컴퓨터의 스토리지 일부 영역을 가지고와 컨테이너의 데이터를 스토리지에 저장할 수 있습니다.
이 기술을 통해 따로 컨테이너와 호스트간의 파일 공유를 통해 저장하지 않아도 되고, 자동으로 변경사항을 저장할 수 있습니다.

 

 

  • 볼륨 마운트(Volume Mount)
    도커엔진이 호스트 저장소에서 일부를 관리하는데 이 저장소를 볼륨이라고 합니다. 볼륨 마운트는 이 도커 엔진이 관리하는 곳 일부를 가져와 컨테이너가 쓸 수 있게 마운트 하는 작업입니다. 볼륨은 직접 조작하기 어려워 주로, 임시 파일, 지우면안되는 중요한 파일 등을 두는 목적으로 사용됩니다.
# 볼륨 생성
docker volume create [볼륨이름]

# 볼륨을 컨테이너에 마운트
docker run -v [볼륨이름]:[컨테이너 마운트 경로]
  • 바인드 마운트(Bind Mount)
    도커가 설치된 호스트 컴퓨터의 도커엔진이 관리하지 않은 기존 저장소에서 직접 마운트 하는 작업입니다. 바인드 마운트는 직접 파일 조작을 할 수 있기에 주로 자주 사용하는 파일을 두는 목적으로 사용됩니다.
#로컬 저장소를 컨테이너에 마운트
docker run -v [스토리지 실제 경로]:[컨테이너 마운트 경로]

 

 

 

볼륨 마운트와 바인드 마운트 차이
  볼륨 마운트 바인드 마운트
저장소 볼륨 로컬 저장소
접근 난이도 어려움 쉬움
수정 방식 도커에서 볼륨으로 접근 로컬에서 접근
파일 관리 도커가 자동적으로 진행 사용자가 직접 진행

 

 

 

 

 

 

 

리눅스 쉘 활용 컨테이너 관리

-호스트 컴퓨터에서 직접 리눅스 쉘을 활용해서 컨테이너를 원격으로 조작할 수 있습니다. 쉘을 활용해서 컨테이너를 조작할 땐 도커엔진을 통하는게 아닌, shell로 직접 명령을 내리는거라, 도커엔진을 통하지 않습니다.

  • 컨테이너와 bash 쉘 연결
docker exec [컨테이너 이름] /bin/bash 
  • 컨테이너와 bash 쉘 연결 해제
exit

 

  도커 명령어 Shell 명령어
명령 주체 도커 엔진 호스트
언어 도커 언어 + 호스트 os에 따라 달라짐 컨테이너 내부 간이 os에 따라 달라짐
활용 대상 도커 엔진,컨테이너 전체 관리 컨테이너 내부 관리
활용 예시 도커 엔진의 시작 or 종료
컨테이너의 시작 및 종료
컨테이너, 호스트 간의 파일 복사
소프트웨어 설치
소프트웨어 실행 및 종료
소프트웨어 설정 변경
 컨테이너 내부 파일 수정작업

 

 

 

 

 

 

 

도커 이미지 생성

- 도커허브에 공식적으로 제공되는 이미지 뿐만 아니라, 자기 자신에게 알맞는 이미지를 생성하여 도커허브에 올릴 수 있는데 크게 두가지 방식이 있습니다.
첫번째는 commit 커맨드를 이용한 기존 컨테이너를 이미지로 변환하는 방식이고, 두번째는 Dockerfile 스크립트에 직접 입력하여 이미지는 만드는 방법이 있습니다.

 

 

 

  • commit 커맨드 사용
    -commit 커맨드를 사용하여 한번에 해당 컨테이너를 이미지로 변환하여 사용할 수 있습니다. 보통 기존 컨테이너를 복제하거나, 다른 곳으로 이동시킬 때 사용하게됩니다.
docker commit [컨테이너 이름] [생성할 이미지 이름]

 

 

  • Dockerfile 스크립트 사용
    -직접 Dockerfile 스크립트를 작성하고 이 스크립트를 빌드하여 이미지를 만드는 방법입니다.
    이 Dockerfile은 스크립트 기반으로 이미지를 만드는 것만 할 수 있으, 스크립트 파일 내부에는 기본 이미지, 실행 명령어, 그 외 명령어 등이 들어가 있습니다.
    (Dockerfile 내부에서 참조되는 모든 파일은 무조건 빌드컨텍스트 경로 안에 존재해야 합니다.)
docker build -t [생성할 이미지 이름] [빌드컨텍스트 경로]

 

 

 

Dockerfile 주요 명령어
명령어 내용 예시 코드
FROM 토대가 되는 베이스 이미지 지정
보통, 도커 허브의 공개 이미지를 주로 사용
FROM ubuntu:20.04
COPY 이미지에 파일이나 폴더 추가 COPY local-file-path /container-path
RUN 커맨드에서 실행할 명령어 지정 RUN apt-get update && apt-get install -y nginx
ENTRYPOINT 이미지를 기반으로컨테이너 실행시
항상 실행할 명령어 지정
ENTRYPOINT ["nginx"]
ARG docker build 커맨드 사용 시 입력 인자 선언 ARG MY_ARG=default_value
WORKDIR 컨테이너 상에서 작업 디렉터리 이동 WORKDIR /app
ENV 환경 변수 설정 ENV MY_VARIABLE=value

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함