[Docker] Docker 이미지 빌드와 이미지 레이어
목차 도커 이미지 빌드 방식 도커 이미지 빌드 과정 예시 이미지 빌드 특징 도커 이미지 레이어 Dockerfile을 이용한 이미지 빌드 vs 수동 빌드 이전 도커 명령어를 다루는 과정에서 이미지 빌드에 대해 설명한 바 있습니다. 이에 대한 내용을 좀 더 자세히 다뤄보려고 합니다. 실습도 중요하지만, 단순히 타이핑만 하는 것 보다 원리를 알고 사용하면 더 좋으니까 말이죠. 도커 명령어에 대해 자세히 알고 싶으시다면 다음 페이지를 이용하시면 되겠습니다. [Docker] 다양한 Docker관련 명령어와 Dockerfile 작성 팁 목차 명령어와 옵션, 활용 예시 Dockerfile이란? Dockerfile 작성 팁 Dockerfile 작성 예시 도커는 이전 Container 시리즈에서 다룬 적이 있으니 Doc..
2023.04.01
[Docker] 다양한 Docker관련 명령어와 Dockerfile 작성 팁
목차 명령어와 옵션, 활용 예시 Dockerfile이란? Dockerfile 작성 팁 Dockerfile 작성 예시 도커는 이전 Container 시리즈에서 다룬 적이 있으니 Docker에 대해 알고 싶으시다면 다음 페이지에 접속해 보시는 것도 좋을 듯합니다. 컨테이너에 들어가면서 데몬을 다운로드하는 것이 조금 복잡해졌습니다. 때문에 다운로드 페이지도 참고하셔도 좋을 듯합니다. [Container 이론] 3. 컨테이너를 다루는 시스템 Docker 목차 Docker란? Docker 개념 개발자가 Docker를 사용하는 과정 Docker 이미지 레이어 컨테이너의 한계 마치며 Docker란? Docker는 2013년에 처음 등장한 컨테이너 기반 가상화 도구입니다. 이를 통해 컨테이 easyitwanner.ti..
2023.04.01
no image
[Docker] Linux에 docker 다운로드
목차 Docker 설치 순서 상태 확인 오류 마치며 Docker 설치 이번 컨테이너 강의에서부터 Ubuntu OS로 변경되어 기준이 Ubuntu로 진행될 것이다. RadHat기반은 apt-get 대신 yum이나 dnf로 바꿔주고 그대로 진행해주면 됨으로 걱정하지 않아도 된다. 순서 업데이트 sudo apt-get update 설치 목록 apt-transport-https ca-certificates curl software-properties-common 설치 명령어 sudo apt-get install -y apt-transprot-https ca-certificates curl software-properties-common GPG키 추가 curl -fsSL https://download.docker..
2023.03.27
반응형

목차

  1. 도커 이미지 빌드 방식
  2. 도커 이미지 빌드 과정 예시
  3. 이미지 빌드 특징
  4. 도커 이미지 레이어
  5. Dockerfile을 이용한 이미지 빌드 vs 수동 빌드

이전 도커 명령어를 다루는 과정에서 이미지 빌드에 대해 설명한 바 있습니다. 이에 대한 내용을 좀 더 자세히 다뤄보려고 합니다. 실습도 중요하지만, 단순히 타이핑만 하는 것 보다 원리를 알고 사용하면 더 좋으니까 말이죠. 도커 명령어에 대해 자세히 알고 싶으시다면 다음 페이지를 이용하시면 되겠습니다.

 

[Docker] 다양한 Docker관련 명령어와 Dockerfile 작성 팁

목차 명령어와 옵션, 활용 예시 Dockerfile이란? Dockerfile 작성 팁 Dockerfile 작성 예시 도커는 이전 Container 시리즈에서 다룬 적이 있으니 Docker에 대해 알고 싶으시다면 다음 페이지에 접속해 보시는

easyitwanner.tistory.com


도커 이미지 빌드 방식

Dockerfile은 Docker 이미지를 빌드하기 위한 일련의 지침이 포함된 스크립트입니다. Dockerfile을 만드는 방법에는 여러 가지가 있습니다.

  1. Dockerfile 수동 생성
    Vim, Nano 또는 Notepad와 같은 텍스트 편집기를 사용하여 Dockerfile을 수동으로 생성할 수 있습니다. 새 파일을 열고 Dockerfile과 같은 이름을 지정하고 올바른 형식으로 지침을 추가하기만 하면 됩니다.

  2. Dockerfile 생성기 사용
    Dockerfile 생성기와 같은 일부 도구는 운영 체제 유형, 프로그래밍 언어, 버전 및 기타 종속성과 같은 특정 구성 세부 정보를 기반으로 Dockerfile을 자동으로 생성할 수 있습니다.

  3. 기본 이미지 사용
    Docker Hub에서 사용할 수 있는 기존 기본 이미지를 사용하여 Dockerfile을 생성할 수도 있습니다. 기본 이미지는 애플리케이션을 실행하기 위한 최소한의 요구 사항을 포함하는 최소한의 이미지입니다.

  4. 타사 도구 사용
    Docker 이미지를 생성할 수 있는 Packer, Ansible 및 Chef와 같은 여러 타사 도구가 있습니다. 이러한 도구는 Dockerfile 생성을 자동화하고 이미지 구성을 관리할 수도 있습니다.

  5. Dockerfile 템플릿 사용
    Dockerfile 템플릿은 Dockerfile 생성에 대한 구조화된 접근 방식을 제공합니다. Cookiecutter와 같은 도구를 사용하여 표준 지침을 포함하고 사용자 지정을 허용하는 템플릿을 만들 수 있습니다.


Dockerfile을 만드는 데 사용되는 방법에 관계없이 빌드 프로세스 중에 문제를 방지하려면 파일이 올바른 구문과 구조를 따르는지 확인하는 것이 중요합니다.


도커 이미지 빌드 과정 예시
  1. Dockerfile 만들기
    첫 번째 단계는 Docker 이미지를 빌드하기 위한 일련의 지침이 포함된 텍스트 파일인 Dockerfile을 만드는 것입니다. Dockerfile은 무엇보다도 기본 이미지를 지정하고 환경 변수를 설정하며 파일을 이미지에 복사합니다.

  2. 터미널 열기
    로컬 컴퓨터에서 터미널을 열고 Dockerfile이 있는 디렉터리로 이동합니다.

  3. docker build 명령 실행
    Dockerfile에서 이미지를 빌드하려면 적절한 옵션과 함께 docker build 명령을 실행합니다. 예를 들어 docker build -t myimage:1.0 .은 현재 디렉터리의 Dockerfile을 사용하여 myimage:1.0 태그가 지정된 이미지를 빌드합니다.

  4. Docker는 Dockerfile을 읽습니다
    docker build 명령을 실행하면 Docker는 Dockerfile을 한 줄씩 읽고 각 명령을 실행합니다.

  5. 기본 이미지 다운로드
    Dockerfile에 지정된 기본 이미지를 다운로드하여 Docker가 시작됩니다. 이것이 이미지 구축의 출발점입니다.

  6. Dockerfile의 각 명령 실행
    그런 다음 Docker는 패키지 설치 또는 파일 복사와 같은 Dockerfile의 각 명령을 실행합니다.

  7. 새 이미지 만들기
    Dockerfile의 모든 지침이 실행되면 Docker가 새 이미지를 만듭니다.

  8. 새 이미지 저장
    새 이미지는 Docker의 로컬 이미지 레지스트리에 저장됩니다. docker images 명령을 사용하여 로컬 컴퓨터의 모든 이미지 목록을 볼 수 있습니다.

  9. 새 이미지 사용
    이미지가 빌드되면 docker run 명령을 사용하여 컨테이너를 실행하는 데 사용할 수 있습니다. 예를 들어 docker run -d -p 80:80 myimage:1.0은 포트 80에서 myimage:1.0 이미지를 사용하여 컨테이너를 시작합니다.

  10. 이미지를 레지스트리로 푸시(선택 사항)
    이미지를 다른 사람과 공유하려는 경우 Docker 허브 또는 프라이빗 레지스트리와 같은 레지스트리로 이미지를 푸시할 수 있습니다. 이렇게 하면 다른 사람이 이미지를 다운로드하고 사용할 수 있습니다.


전반적으로 docker build 명령은 사용자 정의 Docker 이미지를 생성하기 위한 강력한 도구입니다. 위에서 설명한 단계를 따르면 초보자도 Docker 이미지를 만들고 사용하여 애플리케이션을 배포할 수 있습니다.


이미지 빌드 특징

빌드 프로세스는 도커 클라이언트가 수행하지 않습니다. 그 대신 디렉터리의 전체 콘텐츠가 도커 데몬에 업로드되고 그곳에서 이미지가 빌드됩니다. 또한, 도커 클라이언트와 데몬은 같은 머신에 있을 필요는 없습니다.

 

리눅스가 아닌 OS에서 도커를 사용하는 경우 도커 클라이언트는 호스트 OS에 위치하고, 데몬은 가상머신 내부에서 실행됩니다. 빌드 디렉터리의 모든 파일이 데몬에 업로드돼야 하기 때문에 데몬이 로컬로 실행 중이지 않은 상황에서 큰 파일이 다수 포함되면 업로드 시간이 오래 걸릴 수 있습니다. 빌드 프로세스 동안 이미지가 사용자 컴퓨터에 저장돼 있지 않다면, 도커는 기본 이미지를 퍼블릭 이미지 리포지터리(도커 허브)에서 가져옵니다.


도커 이미지 레이어

Docker 이미지는 기본적으로 특정 시점의 파일 시스템 스냅샷인 여러 레이어로 구성됩니다. 각 레이어는 해당 이미지를 구성하는데 필요한 파일이나 디렉토리, 설정, 라이브러리 등의 정보를 담고 있고, 새 파일 추가 또는 기존 파일 수정과 같이 파일 시스템에 대한 특정 변경 사항을 나타냅니다.

docker build 명령을 사용하여 Docker 이미지를 빌드할 때 Dockerfile의 각 행은 새 레이어를 나타냅니다. 예를 들어 Dockerfile에 패키지를 설치하기 위한 RUN 명령이 포함된 경우 Docker는 해당 패키지가 설치된 새 레이어를 생성합니다. Dockerfile에 RUN 명령이 여러 개 있으면 각각 새 레이어를 만듭니다. 이 때 이전 레이어의 내용은 그대로 유지되고 새로운 레이어에 추가됩니다.

Docker 이미지 레이어의 중요한 기능 중 하나는 변경할 수 없다는 것입니다. 즉, 일단 생성되면 변경할 수 없습니다. 이는 Docker 이미지 작업에 여러 가지 의미가 있습니다.

  • 이미지 간에 레이어 공유 가능
    동일한 기본 이미지에서 여러 이미지를 빌드하는 경우 동일한 레이어를 재사용할 수 있으므로 시간과 디스크 공간을 절약할 수 있습니다.

  • 레이어를 캐시할 수 있음
    레이어는 변경할 수 없기 때문에 Docker는 레이어를 로컬로 캐시하고 변경되지 않은 경우 재사용할 수 있습니다. 이렇게 하면 동일한 레이어를 사용하는 후속 이미지의 빌드 프로세스 속도를 높일 수 있습니다.

  • 레이어 검사 가능
    docker history 명령을 사용하여 Docker 이미지를 구성하는 레이어를 검사할 수 있습니다. 이는 이미지 빌드 방법을 이해하고 문제를 해결하는 데 유용할 수 있습니다.

Docker 이미지는 레이어화된 파일 시스템을 사용하므로 이미지를 효율적으로 저장하고 배포할 수 있습니다. 이미지를 업데이트할 때는 변경된 부분만 새로운 레이어로 추가하므로 이전 레이어는 그대로 유지됩니다. 이를 통해 이미지의 용량이 크게 감소하고 더욱 빠른 배포가 가능해집니다. 각 레이어는 별도의 파일로 저장되며 레이어는 런타임에 결합되어 컨테이너의 최종 파일 시스템을 생성합니다.


하지만 이러한 레이어 구조는 이미지가 커질수록 관리가 어려워지기도 합니다. 각 레이어마다 수정이 필요한 경우 해당 레이어를 수정하거나 새로운 레이어를 추가해야 하기 때문입니다. 따라서 이미지를 설계할 때는 레이어 구조와 관련된 특성을 고려하여 효율적인 구성을 고민해야 합니다.


Dockerfile을 이용한 이미지 빌드 vs 수동 빌드

Dockerfile을 사용하여 이미지를 빌드할 때 Dockerfile에 이미지를 생성하라는 명령을 사용자가 지정하면 Docker가 이를 읽고 실행하여 이미지를 생성하는 선언적 방식입니다. 동일한 Dockerfile을 사용하여 동일한 이미지를 여러 번 생성할 수 있으므로 이 방법은 반복 가능합니다. 또한 Git과 같은 소스 제어 시스템에서 Dockerfile의 변경 사항을 추적할 수 있으므로 이미지 생성 프로세스의 버전 제어가 가능합니다. Dockerfile을 사용하면 조건문 또는 인수를 사용하여 이미지의 차이점을 지정하여 단일 소스에서 여러 이미지를 만들 수 있습니다. 그러나 이 방법을 사용하려면 사용자가 Dockerfile 구문 및 모범 사례에 대한 지식이 있어야 합니다.

반면 수동 빌드는 실행 중인 컨테이너에서 명령을 수동으로 실행한 다음 변경 사항을 커밋하여 이미지를 생성하여 이미지를 생성하는 것입니다. 이 방법을 사용하면 사용자가 특정 종속성 또는 구성을 수동으로 설치할 수 있으므로 이미지 생성을 보다 세밀하게 제어할 수 있습니다. 그러나 이 방법은 이미지 생성 단계가 기록되지 않고 버전 제어가 쉽게 구현되지 않기 때문에 쉽게 반복할 수 없습니다. 또한 더 많은 수동 작업이 필요하며 사용자가 필요한 명령에 익숙하지 않은 경우 오류가 발생하기 쉽습니다.

정리하면, Dockerfile을 사용하여 이미지를 빌드하면 이미지 생성을 위한 반복 가능하고 버전 제어가 가능한 선언적 방법을 제공하는 반면, 수동 빌드는 보다 세밀한 제어가 가능하지만 쉽게 반복할 수 없고 버전 제어가 부족합니다. 초보자의 경우 더 간단하고 표준화된 접근 방식인 Dockerfile을 사용하여 이미지 빌드부터 시작하는 것이 좋습니다.


반응형
반응형

목차

  1. 명령어와 옵션, 활용 예시
  2. Dockerfile이란?
  3. Dockerfile 작성 팁
  4. Dockerfile 작성 예시

도커는 이전 Container 시리즈에서 다룬 적이 있으니 Docker에 대해 알고 싶으시다면 다음 페이지에 접속해 보시는 것도 좋을 듯합니다. 컨테이너에 들어가면서 데몬을 다운로드하는 것이 조금 복잡해졌습니다. 때문에 다운로드 페이지도 참고하셔도 좋을 듯합니다.

 

[Container 이론] 3. 컨테이너를 다루는 시스템 Docker

목차 Docker란? Docker 개념 개발자가 Docker를 사용하는 과정 Docker 이미지 레이어 컨테이너의 한계 마치며 Docker란? Docker는 2013년에 처음 등장한 컨테이너 기반 가상화 도구입니다. 이를 통해 컨테이

easyitwanner.tistory.com

 

 

[Docker] Linux에 docker 다운로드

목차 Docker 설치 순서 상태 확인 오류 마치며 Docker 설치 이번 컨테이너 강의에서부터 Ubuntu OS로 변경되어 기준이 Ubuntu로 진행될 것이다. RadHat기반은 apt-get 대신 yum이나 dnf로 바꿔주고 그대로 진행

easyitwanner.tistory.com


명령어와 옵션, 활용 예시

docker 명령어는 Docker 엔진과 상호 작용하는 데 사용되는 명령줄 인터페이스(CLI) 도구입니다. 이를 통해 로컬 시스템 또는 원격 Docker 호스트에서 Docker 컨테이너, 이미지, 네트워크 및 볼륨을 관리할 수 있습니다. docker 명령은 특정 작업을 수행하기 위한 다양한 하위 명령을 제공합니다.

  1. docker build:  Dockerfile 및 주어진 컨텍스트(일반적으로 현재 디렉터리)에서 Docker 이미지를 빌드합니다.

    • -t, --tag: 생성할 이미지의 이름과 태그를 지정합니다.(예: -t my-image:1.0)
    • -f, --file: 사용할 Dockerfile의 경로를 지정합니다.
    • -q, --quiet: 빌드 로그를 출력하지 않고 빌드를 실행합니다.
    • --build-arg: Dockerfile 내에서 사용할 빌드 인자를 설정합니다.
    • --no-cache: 캐시를 사용하지 않고 이미지를 빌드합니다.
    • --pull: 빌드하기 전에 베이스 이미지를 업데이트합니다.

    • 예_
      docker build -t my-image:1.0 .
      docker build -t myimage:latest .

      • 빌드할 때 맨 끝에 한 칸 띄어 쓰고 . 을 꼭 찍어주어야 합니다.

  2. docker run: Docker 이미지에서 새 컨테이너를 생성하고 시작합니다. 포트 매핑 및 볼륨 탑재와 같은 컨테이너 동작을 사용자 지정하기 위해 다양한 플래그를 제공할 수 있습니다.

    • -d: 백그라운드에서 컨테이너 실행(분리 모드)
    • -p <host-port>:<container-port>: 컨테이너 포트를 호스트 포트에 매핑(예: -p 8080:80)
    • -v <host-path>
      <container-path>: 호스트 디렉토리를 컨테이너의 볼륨으로 마운트(예: -v /path/on/host:/path/in/container)
    • --name <container-name>: 컨테이너의 이름을 지정합니다.
    • --env <key=value>: 컨테이너에 환경 변수 설정

    • 예_
      docker run -d -p 8080:80 --name my-container my-image:1.0

  3. docker images: 사용 가능한 이미지 목록을 출력합니다.

    • -a: 중간 레이어를 포함한 모든 이미지 표시
    • --filter <key=value>: 특정 키-값 쌍으로 이미지를 필터링합니다(예: --filter dangling=true).

  4. docker ps: 실행 중인 모든 컨테이너, 해당 상태 및 컨테이너 ID, 이미지 및 포트 매핑과 같은 기본 정보를 나열합니다.

    • -a: 중지된 컨테이너를 포함하여 모든 컨테이너 표시
    • -q: 컨테이너 ID만 표시(다른 명령에서 사용)

  5. docker exec: 실행 중인 컨테이너에서 명령 실행합니다.

    • -d: 컨테이너 내부에서 실행 중인 명령어를 백그라운드로 실행합니다.
    • -i: 컨테이너 내부에서 실행 중인 명령어의 입력을 활성화합니다.
    • -t: 컨테이너 내부에서 실행 중인 명령어의 터미널을 활성화합니다.

    • 예_
      docker exec -it my-container bash
      docker exec mycontainer ls

  6. docker stop: 실행 중인 컨테이너 중지합니다.

    • -t <초>: 컨테이너를 중지하기 전에 시간제한을 지정합니다.

    • 예_
      docker stop my-container

  7. docker rm: 컨테이너 제거

    • -f: 실행 중인 컨테이너 강제 제거
    • -v: 컨테이너의 볼륨도 제거합니다.

    • 예_
      docker rm my-container
      docker rm container1 container2 container3

  8. docker rmi: 이미지 제거

    • -f: 이미지 강제 제거(컨테이너에서 사용하더라도)
    • -a: 사용하지 않는 이미지를 포함하여 모든 이미지 제거
    • --no-prune: 태그 되지 않은 이미지나 dangling 이미지를 삭제하지 않습니다.

    • 예_
      docker rmi myimage:latest           # myimage:latest 이미지 삭제
      docker rmi myimage:latest -f        # 강제로 myimage:latest 이미지 삭제
      docker rmi $(docker images -q)      # 모든 이미지 삭제
      docker rmi $(docker images -aq) -f  # 모든 이미지 강제 삭제

  9. docker login: Docker 레지스트리에 로그인합니다.

    • -u : userID(아이디)
    • -p : password(비밀번호)

  10. docker push: Docker 레지스트리에 이미지 푸시

    • -f, --force: 이미지를 레지스트리에 강제로 푸시합니다.
    • --disable-content-trust: 이미지의 콘텐츠 트러스트를 비활성화합니다.
    • -q, --quiet: 상세 정보 대신 짧은 출력을 보여줍니다.
    • --help: 도움말을 출력합니다.

    • 예_
      docker push myimage:v1.0

  11. docker pull: Docker 레지스트리에서 이미지를 가져옵니다.

    • 예_
      docker pull ubuntu

  12. docker logs: 컨테이너의 로그를 표시합니다.

    • 예_
      docker logs my-container

Dockerfile이란?

먼저 Dockerfile은 Docker 이미지를 만들기 위한 지침서입니다. Docker 이미지는 애플리케이션과 그것이 실행되는 환경을 함께 패키징 한 것입니다. 이 Dockerfile은 이미지를 생성할 때 Docker 엔진에 의해 자동으로 읽히며, 이미지 내에서 애플리케이션을 실행할 때 필요한 모든 것을 설정합니다.

Dockerfile을 작성하면 Docker 엔진이 지정된 명령어를 실행하여 Docker 이미지를 빌드합니다. 이때 Dockerfile에는 애플리케이션을 실행하기 위한 필요한 모든 요구사항이 포함되어야 합니다. 예를 들어, Dockerfile에서는 애플리케이션 코드, 의존성 패키지, 환경 설정 등을 정의할 수 있습니다.

Dockerfile을 사용하면 다양한 환경에서 동일한 애플리케이션을 실행할 수 있으며, 다른 환경에서도 일관된 동작을 보장할 수 있습니다. 또한 Docker 이미지를 빌드하면 이미지를 공유하고 배포할 수 있으며, Docker Hub와 같은 이미지 저장소에 업로드할 수도 있습니다.


Dockerfile 작성 팁
  1. 불필요한 패키지를 설치하지 마세요.
    도커 이미지의 용량은 적을수록 좋습니다. 불필요한 패키지를 설치하지 않는 것은 이미지의 용량을 줄이는데 도움이 됩니다.

  2. 각 명령어마다 캐시를 이용하세요.
    Dockerfile에서 명령어마다 이미지 캐시를 이용하면 이미지를 더 빠르게 빌드할 수 있습니다. 그러나 명령어마다 캐시를 이용하면 이미지 용량이 커지는 문제가 있으므로 주의해야 합니다.

  3. Dockerfile에서는 COPY보다 ADD를 사용하세요.
    ADD 명령어는 COPY 명령어와 같은 역할을 하지만 압축 파일 등의 압축을 푸는 등의 추가 기능을 제공합니다.
    하나의 컨테이너에 하나의 프로세스를 실행하세요.

  4. 각 컨테이너는 하나의 프로세스만 실행하는 것이 좋습니다. 하나의 컨테이너에 여러 개의 프로세스를 실행하는 것은 컨테이너의 운영 및 디버깅을 어렵게 만들 수 있습니다.

  5. 명령어를 정렬해서 사용하세요.
    Dockerfile에서 명령어를 정렬하면 코드의 가독성이 향상되어 유지보수하기 쉬워집니다.

  6. Dockerfile에서는 .dockerignore 파일을 사용하세요.
    .dockerignore 파일을 사용하면 이미지 빌드 시 불필요한 파일이나 디렉토리를 제외할 수 있습니다.

  7. 각 명령어는 새로운 라인에서 시작하세요.
    Dockerfile에서는 한 줄에 여러 개의 명령어를 사용하지 않는 것이 좋습니다. 한 줄에 여러 개의 명령어를 사용하면 이미지 빌드 시 오류가 발생할 가능성이 높아집니다.

  8. 최신 버전의 베이스 이미지를 사용하세요.
    최신 버전의 베이스 이미지를 사용하면 보안 및 기능 개선이 반영될 가능성이 높아집니다.

  9. Dockerfile에서는 환경 변수를 사용하세요.
    환경 변수를 사용하면 이미지를 빌드할 때 환경 변수를 동적으로 바꿀 수 있습니다.

  10. 최소한의 계층을 사용하세요.
    Dockerfile에서는 최소한의 계층을 사용하는 것이 좋습니다. 계층을 줄이면 이미지 용량이 줄어들어 보안 및 배포가 더욱 수월해집니다.

Dockerfile 작성 예시


다음은 간단한 Docker 컨테이너를 빌드, 실행 및 관리하는 프로세스를 보여주는 전체 예제입니다.


1. 다음 내용으로 Dockerfile이라는 파일을 만듭니다.

FROM nginx:latest
COPY index.html /usr/share/nginx/html/


2. 일부 샘플 콘텐츠가 있는 동일한 디렉터리에 index.html 파일을 만듭니다.

html
Copy code
<!DOCTYPE html>
<html>
<head>
    <title>Hello Docker</title>
</head>
<body>
    <h1>Hello from Docker container!</h1>
</body>
</html>


3. Docker 이미지를 빌드합니다.

docker build -t my-nginx:1.0 .


4. 이미지에서 컨테이너를 실행합니다.

docker run -d -p 8080:80 --name my-nginx-container my-nginx:1.0


5. 웹 브라우저를 열고 http://localhost:8080을 방문하여 컨테이너에서 제공하는 콘텐츠를 확인합니다.


6. 컨테이너를 중지하고 제거하려면 다음 명령을 실행합니다.

docker stop my-nginx-container
docker rm my-nginx-container


이 예제는 Dockerfile을 사용하여 간단한 Nginx 웹 서버 컨테이너를 만들고, 여기에서 이미지를 빌드하고, 포트 매핑으로 컨테이너를 실행하고, 사용 후 컨테이너를 정리하는 방법을 보여줍니다.


반응형

'Container > Docker' 카테고리의 다른 글

[Docker] Docker 이미지 빌드와 이미지 레이어  (0) 2023.04.01
[Docker] Linux에 docker 다운로드  (0) 2023.03.27
반응형

목차

  1. Docker 설치
  2. 순서
  3. 상태 확인
  4. 오류
  5. 마치며

Docker 설치

이번 컨테이너 강의에서부터 Ubuntu OS로 변경되어 기준이 Ubuntu로 진행될 것이다. RadHat기반은 apt-get 대신 yum이나 dnf로 바꿔주고 그대로 진행해주면 됨으로 걱정하지 않아도 된다.

 

순서
  1. 업데이트
    sudo apt-get update

  2. 설치 목록
    • apt-transport-https
    • ca-certificates
    • curl
    • software-properties-common
  3. 설치 명령어
    • sudo apt-get install -y apt-transprot-https ca-certificates curl software-properties-common
  4. GPG키 추가
  5. Docker 공식 저장소를 리포지토리로 등록
  6. 리포지토리 갱신
    • sudo apt-get update
  7. Docker Container engine 설치
    • apt-get install -y docker-ce

상태 확인
  1. systemctl status docker (정상 작동이 되고 있는지 확인)
  2. docker version(설치되어 있는 docker 버전 확인)

오류

처음 E를 보면 It is held by process XXXX처럼 프로세스 넘버가 나올 것이다. 이 번호가 문제를 일으키고 있음으로 제거해 주면 이어서 다운로드가 가능하다. 따라서 이와 같은 오류가 나올 때는 다음 명령어를 입력해준다.

  • kill -9 12117

오늘부터 과목이 변경되고, 구글 애드센스에서 탈락되며 블로그 작성방법 변경에 들어갔다. 이전 블로그 포스팅 방식과 현 포스팅 방식 사이에 어떤 것이 좋은지 피드백 해주시면 그에 따라 포스팅 방식을 다시 변경하도록 하겠다. 또 다른 오류가 발견된다면 질문해주시길 바란다. 나도 함께 찾아서 포스팅하도록 하겠다.

 

컨테이너 과목에 들어가면서 Docker, Kubernetes 등 과목이 엄청나게 어려워지고 복잡도도 증가했다. 또한 이 과목을 진행하기 위해서는 이전에 포스팅했던 네트워크, 리눅스에 대한 이해를 필수로 해주어야 한다. 이제 리눅스를 넘어 클라우드에 한걸음 내딛게 되었다. 모든 IT 업계 종사자들을 응원한다. 화이팅이다!

반응형