[참고 사이트]​

- [Docker] Docker 이해하기 -1 : 기초 이론(아키텍처, 흐름, 주요 용어)

1. 아키텍처 및 흐름

(1) 역할

Docker를 이용하여 ‘클라이언트 - 서버’를 구성하는 아키텍처입니다.

① Client 역할

- Docker 명령어를 사용하여 컨테이너를 실행, 관리, 모니터링하고, 이미지를 빌드하거나 다운로드할 수 있습니다. 또한 Docker 명령어를 통해 Docker Host와 상호작용 하는 역할을 합니다.

② Docker Host 역할

- Docker 컨테이너를 실행하는 데 사용되는 가상머신을 의미합니다.

- Docker 데몬을 실행하여 컨테이너를 생성, 시작, 중지 및 관리를 수행하는 역할을 수행합니다.

- Client의 요청을 받아들이고 컨테이너를 생성, 시작, 중지, 제거하는 등의 작업을 수행합니다. 또한, 호스트 운영 체제의 리소스를 사용하여 컨테이너를 실행하고 관리합니다.

③ Docker Registry 역할

- Docker 이미지를 저장하고 관리하는 중앙 집중식 저장소입니다.

- 공식적인 도커 레지스트리로, 도커 허브(Docker Hub)를 통해서 Docker 이미지를 공유하고 검색할 수 있도록 합니다.

- 또한, 개인이나 기업은 독립적인 도커 레지스트리를 구축하여 이미지를 안전하게 저장하고 관리할 수 있습니다.

(2) Docker 클라이언트, 도커 호스트, 도커 레지스트리 간 흐름

① Client → Docker Host

- 클라이언트(Client)는 도커 명령어(Docker run, build, pull, …)를 사용하여 도커 호스트(Docker Host)에 요청을 보냅니다.

② Docker Host

- 도커 호스트(Docker Host)는 클라이언트(Client)의 요청을 받아들이고 해당 요청에 따라 컨테이너를 생성, 중지, 제거하거나 이미지를 관리합니다.

③ Docker Host → Registry

- 만약 클라이언트(Client)가 이미지를 생성하거나 업로드하려면, 도커 호스트(Docker Host)는 해당 이미지를 도커 레지스트리(Registry)에 업로드합니다.

④ Registry

- 도커 레지스트리(Registry)는 이미지를 저장하고 관리하는 중앙 집중식 저장소입니다. 도커 호스트(Docker Host)에서는 도커 레지스트리(Registry)에 이미지를 업로드하거나 다운로드할 수 있습니다.

⑤ Docker Host → Client

- 컨테이너가 종료되면, 도커 호스트(Docker Host)는 해당 컨테이너의 상태와 결과를 클라이언트(Client)에게 반환합니다. 이러한 과정들을 통하여 클라이언트, 도커 호스트, 도커 레지스트리는 도커 환경에서 상호작용하며 이미지 업로드와 다운로드, 컨테이너의 생성과 관리 등의 작업을 수행합니다.

(3) Docker 명령어

- Client에서 Docker를 사용하는 명령어는 아래 표와 같습니다.

명령어
설명
docker run
Docker 컨테이너를 실행합니다.
docker build
Docker 이미지를 빌드합니다.
docker pull
Docker 이미지를 다운로드하여 로컬 Docker 환경에 저장합니다.

2. Docker 주요 용어

용어
분류
설명
도커 클라이언트(Docker Client)
아키텍처 요소
도커를 사용하기 위한 커맨드 라인 도구입니다. 사용자는 도커 클라이언트를 통해 도커 호스트와 상호 작용하고, 도커 이미지를 관리하며, 도커 컨테이너를 실행, 중지, 삭제 등을 할 수 있습니다.
도커 호스트(Docker Host)
아키텍처 요소
도커 이미지를 저장하고, 도커 컨테이너를 실행하며, 도커 클라이언트와 통신합니다.
도커 레지스트리(Docker Registry)
아키텍처 요소
도커 이미지를 저장하는 중앙 저장소입니다. 도커 클라이언트는 도커 레지스트리에서 이미지를 검색하고, 푸시하고, 풀(pull)할 수 있습니다.
 
 
 
도커 데몬(Docker Deamon)
구성요소
도커 호스트에서 실행되며, 도커 클라이언트와 상호 작용하고, 도커 이미지와 컨테이너를 관리합니다.
도커 이미지(Docker Image)
구성요소
도커 컨테이너를 실행하는 데 필요한 파일과 설정을 포함하는 가볍고 독립적인 실행 가능한 패키지입니다. 도커 레지스트리에서 가져올 수 있고, 도커 파일을 사용하여 빌드할 수도 있습니다.
도커 컨테이너(Docker Container)
구성요소
도커 이미지의 인스턴스입니다. 격리된 환경에서 실행되며, 운영 체제 수준의 가상화 기술을 사용하여 프로세스를 격리합니다.
도커 허브(Docker Hub)
구성요소
도커 커뮤니티에서 제공하는 공개적인 도커 레지스트리입니다. 도커 허브에서는 다양한 도커 이미지를 검색하고, 공유하고, 다운로드할 수 있습니다.
도커 파일(Docker File)
구성요소
도커 이미지를 빌드하기 위한 텍스트 파일입니다. 도커 이미지를 구성하는 명령어와 설정이 포함되어 있습니다. 도커 파일을 사용하면 반복적인 이미지 빌드를 자동화할 수 있습니다.

(1) 도커 클라이언트(Docker Client)

- 도커 컨테이너와 상호작용을 하기 위한 커멘드 라인 도구입니다.

- 도커 클라이언트를 사용하면 도커 호스트와 통신하여 도커 컨테이너의 생성, 실행, 관리 등을 할 수 있습니다.

- 다양한 명령어와 옵션을 제공하여 도커 환경을 효율적으로 관리할 수 있도록 도와줍니다.

docker 명령어
설명
docker -v
docker 버전을 확인합니다.
docker ps -a
docker의 컨테이너 목록을 확인합니다.
docker pull [docker image]
docker의 이미지를 다운로드 받습니다.
docker build
docker 이미지를 빌드합니다.
docker push
docker 이미지를 레지스트리에 업로드합니다.
docker run
docker 이미지를 기반으로 컨테이너를 생성하고 실행시킵니다.
docker login
docker 계정 로그인을 수행합니다.
docker image ls
docker 이미지 목록들을 확인합니다.
docker tag
docker 이미지에 이름 또는 태그를 할당합니다.
docker pull
docker 이미지를 레지스트리에서 가져옵니다.

(2) 도커 호스트(Docker Host) = 도커 서버(Docker Server)

- 도커 컨테이너를 실행하는 데 사용되는 시스템입니다. 도커 엔진이 설치되어 있는 머신 또는 가상 머신을 의미합니다.

- 클라이언트로부터 명령어를 전달받아 컨테이너의 생성, 실행, 관리를 담당하며, 도커 이미지를 저장하고 컨테이너 간 통신을 관리합니다.

- 도커 호스트는 호스트 운영 체제와 네트워크와 상호작용하며, 컨테이너가 실행되는 환경을 제공합니다.

(3) 도커 레지스트리(Docker Registry)

- 도커 이미지를 저장하고 관리하기 위한 중앙 저장소입니다. 도커 이미지는 컨테이너화된 애플리케이션을 실행하기 위한 파일 시스템과 실행 환경을 포함하고 있습니다.

- 도커 레지스트리는 이러한 이미지들을 중앙에서 관리하고 공유할 수 있는 플랫폼입니다.

- 도커 레지스트리를 사용하면 이미지를 쉽게 관리하고 배포할 수 있으며, 여러 사용자와 협업하여 이미지를 공유할 수도 있습니다.

(4) 도커 데몬(Docker Deamon)

- 클라이언트에서 요청한 ‘도커 명령어를 처리’하고 도커 컨테이너를 관리하는 백그라운드 프로세스입니다.

- 도커 엔진과 상호 작용하여 컨테이너의 생성, 실행, 중단, 삭제 등을 처리합니다.

- 주로 서버에서 실행되며, 도커 API 요청을 받아들이고 이미지, 컨테이너, 네트워크 등의 관리를 담당합니다. 또한, 도커 데몬은 컨테이너의 생명주기를 관리하고 리소스 할당, 네트워크 연결 등의 작업을 처리합니다.

(5) 도커 이미지(Docker Image)

- 도커 컨테이너를 실행하기 위한 파일과 설정 정보를 포함하는 컨테이너의 템플릿을 의미합니다.

- 자신만의 이미지를 가질 수 있고 다른 사람이 만든 이미지를 가져와 사용할 수도 있습니다. 그리고 이 이미지는 레지스트리에 게시됩니다.

- 이미지는 도커 파일(Dockerfile)이라는 텍스트 파일에 정의되며, 도커 이미지를 생성하는 데 사용됩니다.

① 도커 레지스트리에서 관리되고 저장됩니다.

- 도커 허브는 도커가 제공하는 공개 레지스트리로, 다른 사람들과 도커 이미지를 공유하고 검색할 수 있는 장소입니다.

- 도커 허브 이외에도 도커 엔터프라이즈 에디션을 사용하여 개인적인 레지스트리를 구축할 수도 있습니다.

② 컨테이너를 생성하고 실행하기 위해 사용됩니다.

- 도커 클라이언트를 사용하여 이미지를 다운로드하고 컨테이너를 생성할 수 있습니다.

- 이미지는 컨테이너의 기반이 되며, 여러 개의 컨테이너를 동시에 실행하거나 스케일링할 수도 있습니다.

③ 애플리케이션을 쉽게 배포하고 관리할 수 있는 강력한 도구입니다.

- 이미지를 빠르게 구축하고 공유함으로써 개발과 운영의 효율성을 높일 수 있습니다.

(6) 도커 컨테이너(Docker Container)

- 실행 가능한 이미지 인스턴스를 의미합니다.

- 컨테이너는 컨테이너 간의 격리된 환경에서 실행되며, 호스트와는 독립적으로 실행될 수 있습니다. 이를 통해 애플리케이션의 이식성과 확장성이 향상되고, 리소스 사용이 최적화됩니다.

(7) 도커 허브(Docker Hub)

- 도커 컨테이너 이미지를 공유하고 관리하기 위한 클라우드 기반 레지스트리입니다.

- 도커 허브를 사용하면 컨테이너 이미지를 업로드, 다운로드 및 공유할 수 있습니다. 또한 도커 허브는 공식적인 이미지 저장소로서 다양한 언어, 프레임워크, 데이터베이스 등의 컨테이너 이미지를 제공합니다.

- 사용자는 도커 허브에서 이미지를 검색하고 필요한 이미지를 사용할 수 있습니다. 도커 허브는 개인 및 조직용 계정을 제공하여 이미지를 관리하고 접근 권한을 제어할 수도 있습니다. 도커 허브는 도커 생태계에서 핵심적인 역할을 담당하며, 컨테이너 기반 애플리케이션 개발과 배포를 위한 필수 도구입니다.

(8) 도커 파일(Dockerfile)

- 도커 이미지를 만들고 빌드하기 위한 텍스트 파일을 의미합니다. 이는 컨테이너 이미지를 구성하는데 필요한 모든 단계와 명령을 정의합니다.

- 도커 파일은 일련의 명령을 작성하여 이미지를 빌드하는 방법을 지정합니다. 일반적으로 도커 파일은 기본 이미지를 지정하고, 필요한 패키지를 설치하고, 파일을 복사하며, 명령을 실행하는 등의 작업을 수행합니다.

- 각 명령은 도커 파일에서 한 줄씩 작성되며, 이전 단계의 결과를 기반으로 수행됩니다.

- 도커 파일을 사용하면 반복적이고 일관적인 컨테이너 이미지 빌드 프로세스를 자동화할 수 있습니다. 도커 파일을 작성하고 빌드하면 도커 엔진이 자동으로 이미지를 생성하고 저장할 수 있습니다.

명령어
설명
FROM
베이스 이미지 지정
RUN
이미지를 지정하면서 실행할 명령 지정
CMD
컨테이너의 어플 지정 ( 컨테이너 시작할 때 실행할 명령어 )
LABEL
이미지의 라벨 지정
EXPOSE
컨테이너의 포트 지정
ENV
컨테이너의 환경 변수 지정
ADD
이미지 생성 시 파일/디렉토리 추가
COPY
이미지 생성 시 파일 복사
ENTRYPOINT
컨테이너의 어플 지정 ( 컨테이너 시작할 때 실행할 명령어 )
VOLUME
컨테이너의 볼륨 지정
USER
컨테이너의 사용자 지정
WORKDIR
컨테이너 작업 디렉토리 지정
ARG
Dockerfile 안의 변수
ONBUILD
빌드 완료 후 실행되는 명령
STOPSIGNAL
종료 시그널 설정
HEALTHCHECK
컨테이너의 상태 체크
SHELL
기본 쉘 설정
MAINTAINER
이미지 작성자 명시

 

출처 : https://blog.naver.com/islove8587/223420625260

728x90
반응형

(1) 설명

도커(Docker)는 컨테이너 기반의 오픈 소스 가상화 플랫폼으로, 가상적인 환경에서 애플리케이션을 실행시키기 위해 리눅스 커널의 '컨테이너' 기능을 활용하는 방식입니다.

도커는 운영체제나 애플리케이션을 가상화된 하드웨어 안에서 실행시키는 대신, 컨테이너로 애플리케이션을 실행합니다. 이러한 컨테이너는 다른 프로세스나 컨테이너로부터 분리되어 독립적으로 동작하므로 애플리케이션과 관련 없는 작업을 처리하지 않아 자원의 낭비가 적습니다.

도커의 가장 중요한 개념은 "컨테이너"입니다. 컨테이너는 격리된 환경에서 프로세스를 실행하기 위한 경량화된 가상화 단위로 애플리케이션과 그에 필요한 모든 종속성(라이브러리, 실행 파일 등)을 컨테이너에 패키징 하여 동일한 환경에서 실행할 수 있게 합니다. 이러한 컨테이너는 호스트 시스템과 격리되어 독립적으로 실행되며, 다른 컨테이너와는 서로 영향을 주지 않고 상호작용할 수 있습니다.

(2) 장점

  • 환경 일치성 : 다양한 환경에서 동일한 실행 환경을 보장합니다. 개발 환경과 운영 환경의 차이로 인한 문제를 방지하며, 응용 프로그램을 어디서든 실행할 수 있습니다.
  • 편리한 배포 : 도커 컨테이너는 이미지로 패키징 되어 배포되므로, 애플리케이션 배포가 간단해집니다. 이미지를 공유하거나 배포할 때 용이하며, 빠른 확장이 가능합니다.
  • 격리된 환경 : 도커는 각 컨테이너를 격리된 환경으로 실행하므로, 하나의 컨테이너에서 발생한 문제가 다른 컨테이너에 영향을 주지 않습니다.
  • 자원 효율성 : 가상 머신과 비교해 더 가볍고 빠르며, 호스트 시스템의 리소스를 효율적으로 활용할 수 있습니다.
  • 스케일링 : 컨테이너 기반 아키텍처는 쉬운 스케일링이 가능하여 요구에 따라 응용 프로그램을 확장할 수 있습니다.

(3) 단점

  • 복잡성 : 도커는 초기 학습 곡선이 있을 수 있으며, 컨테이너, 이미지, 네트워크 등의 개념과 도커 자체의 명령어와 설정에 익숙해지는 시간이 필요합니다.
  • 가상화 오버헤드 : 도커는 호스트 시스템의 리소스를 공유하여 가상화를 구현합니다. 이는 일부 오버헤드를 초래할 수 있으며, 가상화가 필요 없는 경우에도 약간의 성능 저하가 발생할 수 있습니다.
  • 보안 취약성 : 도커는 격리 기능을 제공하지만, 완전한 보안을 보장하지는 않습니다. 컨테이너 간의 공격 가능성이 있으며, 적절한 보안 조치를 적용해야 합니다.
  • 영속적인 데이터 관리 : 도커는 컨테이너를 재시작하면 컨테이너 내부의 데이터가 손실될 수 있습니다. 영속적인 데이터 저장을 위해 별도의 볼륨이나 데이터베이스 서비스가 필요할 수 있습니다.
  • 호환성 문제 : 도커는 리눅스 커널의 기능을 사용하므로, 일부 운영 체제에서는 호환성 문제가 발생할 수 있습니다. 특히, Windows나 macOS에서는 가상화 기술이 필요할 수 있습니다.

(4) 사용 예시

  • 웹 개발 : 도커를 사용하여 웹 애플리케이션을 개발하면, 개발 환경을 동일하게 설정하고 다른 팀원과의 협업을 용이하게 할 수 있습니다. 개발 중인 애플리케이션의 서버, 데이터베이스, 캐싱 시스템 등을 각각의 도커 컨테이너로 실행하면 환경 일치성을 유지하면서 작업할 수 있습니다.
  • 서버 개발 : 마이크로서비스 아키텍처에서는 각 서비스를 독립적인 도커 컨테이너로 구성하여 개발하고 배포할 수 있습니다. 각 서비스는 독립된 코드 베이스와 종속성을 가지며, 개별적으로 스케일링이 가능합니다.
  • AI 모델 개발 : AI 모델을 개발하고 배포할 때도 도커를 활용할 수 있다. 예를 들어, AI 모델을 실행하는 도커 컨테이너를 생성하고 배포할 수 있습니다. 이 컨테이너는 모델 추론을 수행하고, 필요한 라이브러리 및 종속성을 포함할 수 있습니다.

2. 가상머신(Virtual Machine)과 도커(Docker)의 차이

(1) 가상머신

  • 가상머신은 호스트 운영체제 위에 가상화된 하드웨어 계층을 생성하고, 각 가상머신은 독립된 운영체제, 커널, 드라이버 등을 가짐
  • 이로 인해 무겁고 높은 자원 소비가 필요
  • 운영체제의 부팅 과정이 필요하므로 시간이 오래 걸림
  • 독립된 운영체제를 가지므로 메모리, 디스크 공간 등 자원을 많이 소비

(2) Docker 컨테이너

  • Docker 컨테이너는 호스트 운영체제의 커널을 공유하며, 가볍게 격리된 환경을 생성
  • 가상 머신보다 더 가벼우며 효율적으로 실행
  • 이미지와 컨테이너 레이어를 사용하여 빠르게 생성되며, 실행 속도가 매우 빠름
  • 컨테이너는 호스트 운영체제의 커널을 공유하므로 가볍고 효율적으로 자원을 활용
가상 머신 (VM)
도커 (Docker)
구조
하드웨어 위에 호스트 OS와 게스트 OS로 구성
호스트 OS 위에서 동작하며 컨테이너화된 애플리케이션 실행
성능
하이퍼바이저로 인한 오버헤드로 약간의 성능 저하
컨테이너화로 인한 가벼운 성능 손실
시작 시간
VM을 시작하기 위해 시간이 필요
컨테이너는 몇 초 내에 시작 가능
자원 사용량
독립적인 자원을 사용하여 오버헤드 발생
호스트의 커널 및 자원을 공유하여 효율적인 자원 사용
확장성
가상 머신은 더 많은 하드웨어를 추가하여 확장 가능
도커는 컨테이너를 복제하여 수평으로 확장 가능
격리성
격리된 환경을 제공하여 보안을 강화
호스트와 컨테이너 간 격리가 상대적으로 약함
관리 용이성
VM은 완전한 운영 체제를 관리해야 함
도커는 이미지와 컨테이너를 사용하여 관리 용이

결론만 얘기하면 기존 가상머신은 무겁고 느리지만, 도커 컨테이너는 가볍고 빠르게 실행되며 호스트의 운영체제의 커널을 공유하는 방식으로 동작한다는 것입니다.

또한 컨테이너 기술은 애플리케이션 배포와 관리를 더 효율적으로 처리할 수 있는 방법을 제공합니다.

3. 도커(Docker)의 동작 방식

4. 도커(Docker)의 3대 구성 요소

(1) Dockerfile

  • 애플리케이션을 구동하기 위한 Dependency, 환경 변수, 스크립트 등을 포함할 수 있음.
  • 이미지 생성 방법을 정의하는 문서
  • DockerFile 명령어는 위에서 한 줄씩 차례대로 실행됨.

(2) Docker Image

  • Docker File을 이용해 Image를 만든다.
  • 컨테이너를 실행하기 위한 압축파일
  • 실행되고 있는 Application의 상태를 스냅샷으로 남긴다고 생각
  • 만들어진 Image는 불변의 상태

(3) Docker Container

Image를 이용해서 Application이 동작하는 Container를 만듭니다.

이렇게 생성된 각각의 Container는 개별적으로 동작하고 Image에 영향을 끼치지 않습니다.

5. 도커 이미지를 배포하는 과정

(1) 배포하는 과정

① 로컬 머신에서 Docker Image를 만든다.

② Container Registry에 만든 이미지 파일을 업로드

③ Server에서 Docker Image를 받아와서 그대로 실행(Server에서는 Docker가 설치되어 있어야 함)

(2) Container Registry 제공 업체

 

 

출처 : https://blog.naver.com/islove8587/223419662833

728x90
반응형

'Docker' 카테고리의 다른 글

[Docker] 윈도우에 Docker 설치(Home 포함)  (0) 2025.02.19
[Docker] 도커 아키텍처 및 흐름  (0) 2025.02.19
Docker Compose File  (0) 2025.02.18
도커 사용법  (1) 2025.02.18
Docker환경에서 MSSQL설치하기  (0) 2025.02.18

version: '3.8'
name: MSSQL2022

services:
  sqlserver:
    image: mcr.microsoft.com/mssql/server:2022-latest
    user: root
    restart: always
    container_name: MSSQL2022
    hostname: MSSQL2022
    ports:
      - 1431:1433
    volumes:
      - ./db/mssql/data:/var/opt/mssql/data
    environment:
      ACCEPT_EULA: Y
      MSSQL_SA_PASSWORD : password1!
      TZ: Asia/Seoul

 

  • user(root 계정) 반드시 설정(안하면 permission error 발생)
  • restart는 오류 발생시 재시작 여부 또는 첫 부팅시 자동 실행 여부. Docker 시작될 시에 컨테이너가 자동으로 시작되게 하고 싶으면(컴퓨터를 켜고 docker를 실행만 하면 MSSQL을 쓰게 하고 싶으면 always를 넣자)
  • container_name 원하는 이름으로 설정
  • port는 1433:1433으로 맵핑(MSSQL 기본 포트 번호는 1433)
  • volumes => 컨테이너 내부 데이터를 디스크와 공유하기 위해 volume 설정
  • 그외 필요한 environment(환경 변수) 설정

- ACCEPT_EULA : 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정.

- MSSQL_SA_PASSWORD : 8자 이상이고 SQL Server 암호 요구 사항을 충족하는 자신만의 강력한 암호를 지정.

- TZ : 도커 컨테이너 타임존 설정

 

 

위 내용을 sql2022-docker-compose.yml 로 저장

 

실행 : docker-compose -f sql2022-docker-compose.yml up -d

 

내부접속 

docker exec -it MSSQL2022 /opt/mssql-tools/bin/sqlcmd -C -S localhost,1433 -U sa -P password1!

728x90
반응형

'Docker' 카테고리의 다른 글

[Docker] 도커 아키텍처 및 흐름  (0) 2025.02.19
[Docker] 도커 개념 설명 | 도커는 왜 사용하는 걸까?  (0) 2025.02.19
도커 사용법  (1) 2025.02.18
Docker환경에서 MSSQL설치하기  (0) 2025.02.18
MSSQL 서버 올리기  (5) 2024.10.31

<도커 이미지 생성>

1.접속

 -터미널에서  접속

 -root계정 로그인

 

2.도커 이미지 생성

먼저 Docker Hub Web(https://hub.docker.com/) 에서 공식 레파지토리와, 누군가가 올려놓은 public repository에서 pull받고자하는 이미지를 찾는다.

 

 -docker images 명령어로 현재 이미지 리스트 조회

 -docker pull [옵션]<이미지명>[:태그명]

   ex) docker pull dhmk815/tibero:6.0.2

 

※ 옵션

--automated=false : Automated Build만 표시

--no-trunc=false : 모든 결과를 다 표시

-s[--stars=n] : star 수가 n개 이상인 결과만 표시 

 

 

<도커란?>

리눅스 컨테이너를 기반으로 서비스를 패키징하고 배포하는데 유용한 오픈소스 프로그램

 

 

가상머신은 Guest OS를 만들어서 Host OS(메인운영체제)에서 자원을 일부 사용하여 구동시킨다. 메인 운영체제도 느려지고 Guest OS도 성능이 좋은 편이 아니다.

컨테이너는 꼭 필요한 것만 담겨서 구동 되며 컨테이너에 필요한 커널은 호스트의 커널과 공유해서 사용하고, 컨테이너 안에는 애플리케이션을 구동하는데 필요한 라이브러리 및 실행파일만 존재함으로 컨테이너를 이미지로 만들경우 용량이 줄어든다.

 

 

도커의 장점

  • 호스트 OS, 다른 컨테이너와 독립된 공간을 보장받을 수 있기 때문에 충돌 발생 염려가 없다.
  • 컨테이너 내부 작업을 한 후에 배포하려고 한다면 도커 이미지로 만들어서 운영서버에 전달하면 된다.
  • 컨테이너 하나당 하나의 기능만을 모듈로 만들어서 부하가 많은 모듈은 여러개 더 만들고 하는 조정이 가능

 

도커 설명

  • 도커 이미지 : 도커 컨테이너를 구성하는 파일 시스템과 실행할 애플리케이션 설정을 하나로 합친 것으로, 컨테이너를 생성하는 템플릿 역할을 한다.
  • 도커 컨테이너 : 도커 이미지를 기반으로 생성되며, 파일 시스템과 어플리케이션이 구체화되어 실행되는 상태
  • 도커 허브 : 컨테이너 이미지를 찾고 공유하기 위해 도커가 제공하는 서비스

도커 이미지 명령어

  • $docker image pull[options] 레포지토리명[:태그명] -> 도커 레지스트리에서 도커 이미지를 내려받는다
  • $docker image push[options] 레포지토리명[:태그명] -> 도커 이미지를 도커 허브 등의 레지스트리에 등록한다.
  • $docker image rm[id 또는 이미지명]

 

docker run(컨테이너 실행) 명령어 옵션

$docker run <옵션> <이미지 식별자> <명령어> <인자>  -> 기본 포멧

  • -d : 컨테이너를 백그라운드에서 실행
  • -it : 컨테이너를 종료하지 않은체로, 터미널의 입력을 계속해서 컨테이너로 전달하기 위해 사용
  • --name : 컨테이너에 이름을 부여
  • -e : 컨테이너의 환경변수를 설정하기 위해서 사용
  • -p : 호스트와 컨테이너 간의 포트 배포/바인드를 위해서 사용, 호스트 컴퓨터에서 컨테이너에서 리스닝하고 있는 포트로 접속할수 있도록 설정
  • -v : 호스트와 컨테이너 간의 볼륨설정을 위해서 사용

 

도커 허브(docker hub)

도커 허브를 기준으로 도커 이미지 이름은<NAMESPACE>/<IMAGE_NAME>:<TAG>형식으로 구성

 

docker.io/library/nginx:latest 

 

docker.io : 이미지 저장소의 실제 주소

library : 도커 허브의 공식 이미지가 저장되어있는 특별한 네임스페이스

nginx:latest : 요청 풀이름

 

 

*오류

 

도커 이미지 삭제 오류

-> 이미지 mariadb를 삭제하려고 할 때 이미지를 참조 중이여서 발생하는 에러이다. 컨네이너ID가, 이미지ID를 참조중

-> docker container ls -a로 해당 ID를 가진 컨테이너 확인 후 삭제하고자 하는 이미지를 바로 보고 있는 컨테이너 모두 삭제

 

출처 : https://fubabaz.tistory.com/4?category=986694

728x90
반응형

'Docker' 카테고리의 다른 글

[Docker] 도커 개념 설명 | 도커는 왜 사용하는 걸까?  (0) 2025.02.19
Docker Compose File  (0) 2025.02.18
Docker환경에서 MSSQL설치하기  (0) 2025.02.18
MSSQL 서버 올리기  (5) 2024.10.31
Docker 명령어 구조  (1) 2024.09.03

Docker란?

 - 도커(Docker)는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트입니다.

 

Docker의 주요 명령어

 1. search (image 검색)

   #docker search mssql

    - Docker Hub로부터 사용가능한 image를 찾는 명령어

 

 2. pull (image 다운로드)

   #docker pull mssql2019:latest

    - Docker Hub로부터 image를 다운받는 명령어

 

 3. images (image 목록 출력)

   #docker images

    - 현재 Host PC에 다운 받아져있는 image들을 출력하는 명령어

 

 4. run(컨테이너 생성과 동시에 컨테이너로 접속)

   #docker run "REPOSITORY"

    (docker run <옵션><이미지 이름 or 이미지ID><실행할 파일>)

    - 다운받은 image를 실행 형태의 컨테이너로 만드는 명렁어

 

 5. ps(컨테이너 확인(실행중인 image확인))

   #docker ps

    - 실행중인 컨테이너의 목록을 출력

 

   #docker ps -a

    - 실행중인 컨테이너를 포함한 모든 컨테이너의 목록을 출력

 

내용 출처 : Docker 명령어 정리 (tistory.com)

 

Docker 명령어 정리

Docker 사용법 CentOS Docker는 OS의 자원을 사용하기 때문에 기본적으로 Root 사용자에서 명령어를 사용해야한다 1. search (image 검색) # docker search centos - Docker Hub로부터 사용가능한 image를 찾는 명..

captcha.tistory.com

 

 

Docker환경에서 MSSQL설치하기

 

1. Docker Hub의 MSSQL목록 확인하기

 # docker search mssql

- Docker Hub에서 pull 할 수 있는 mssql목록을 확인합니다.

 

2. Microsoft Container Registry에서 SQL Server 2019 Linux 컨테이너 이미지를 pull 합니다.

   # sudo docker pull mcr.microsoft.com/mssql/server:2019-latest

 

3. Docker를 사용하여 컨테이너 이미지를 실행합니다.

   # sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<사용자설정 PW> -p 1433:1433 \

--name <사용자 지정 이름> -h <컨테이너 호스트 이름> -d mcr.microsoft.com/mssql/server:2019-latest

매개변수 Description
-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 설정을 해야 합니다.
-e "SA_PASSWORD=<사용자설정 PW>" 8자 이상이고 SQL Server 암호 요구사항을 충족하는 암호를 필수로 합니다.
-p 1433:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다.
--name <사용자 지정 이름> 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.
-h <컨테이너 호스트 이름> 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 앟으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.
-d mcr.microsoft.com/mssql/server:2019-latest SQL Server 2019 Ubuntu Linux 컨테이너 이미지입니다.

 

4. 실행중인 Docker 컨테이너를 확인합니다.

   # sudo docker ps

- 실행중인 Docker 컨테이너 목록

   ※ 해당 화면에서 STATUS열이 UP이 아닌 Exited를 표시하는 경우, 실행 중 오류가 발생했을 확률이 높습니다.(반드시 MSSQL암호 정책에 맞는 암호를 설정해야 합니다.)

 

5. MSSQL 연결

   # sudo docker exec -it sql1 "bash"

    - docker exec -it 명령을 사용하여 실행 중인 컨테이너 내에서 대화형 bash 셸을 시작합니다.

   # /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<사용자 지정 PW>"

    - 컨테이너 내부로 들어가면 sqlcmd를 사용하여 로컬로 연결합니다. Sqlcmd는 기본적으로 경로에 있지 않으므로 전체 경로를 지정해야 합니다.

- 접속에 성공하면 다음과 같이 명령어 프롬프트에 1>이 표시됩니다.

자료 출처 : Docker: SQL Server on Linux의 컨테이너 설치 - SQL Server | Microsoft Docs

728x90
반응형

'Docker' 카테고리의 다른 글

[Docker] 도커 개념 설명 | 도커는 왜 사용하는 걸까?  (0) 2025.02.19
Docker Compose File  (0) 2025.02.18
도커 사용법  (1) 2025.02.18
MSSQL 서버 올리기  (5) 2024.10.31
Docker 명령어 구조  (1) 2024.09.03

 

MS SQL 이미지 다운로드

docker pull mcr.microsoft.com/mssql/server:2022-latest

 

Container 이미지 실행

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<SA Passw0rd>" -p 1401:1433 --name MSSQL2022 --hostname MSSQL2022 -d mcr.microsoft.com/mssql/server:2022-latest

 

 

매개변수

매개 변수Description

-e "ACCEPT_EULA=Y" 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 설정을 해야 합니다.
-e "SA_PASSWORD=<YourStrong!Passw0rd>" 8자 이상이고 SQL Server 암호 요구 사항을 충족하는 자신만의 강력한 암호를 지정합니다. SQL Server 이미지에 대한 설정을 해야 합니다.
-p 1401:1433 호스트 환경의 TCP 포트(첫 번째 값)를 컨테이너의 TCP 포트(두 번째 값)로 매핑합니다. 이 예제에서 SQL Server는 컨테이너의 TCP 1433에서 수신 대기하고 이 컨테이너는 호스트의 TCP 포트 1433에 공개됩니다.
--name sql1 컨테이너에 대해 임의로 생성된 이름보다는 사용자 지정 이름을 지정합니다. 둘 이상의 컨테이너를 실행하는 경우 이 동일한 이름을 다시 사용할 수 없습니다.
--hostname sql1 컨테이너 호스트 이름을 명시적으로 설정하는 데 사용됩니다. 지정하지 않으면 임의로 생성된 시스템 GUID인 컨테이너 ID가 기본값으로 사용됩니다.
-d 백그라운드(디먼)에서 컨테이너를 실행합니다.
mcr.microsoft.com/mssql/server:2022-latest SQL Server Linux 컨테이너 이미지입니다.

 

ACCEPT_EULA 최종 사용자 사용권 계약 수락을 확인하기 위해 ACCEPT_EULA 변수를 어떤 값에 설정합니다. SQL Server 이미지에 대한 설정을 해야 합니다.
MSSQL_SA_PASSWORD SA 사용자 암호를 구성합니다.
MSSQL_PID SQL Server 버전 또는 제품 키를 설정합니다. 가능한 값은 다음과 같습니다.
Evaluation
Developer
Express
Web
Standard
Enterprise
제품 키
제품 키를 지정하는 경우 #####-#####-#####-#####-##### 형식이어야 합니다. 여기서 '#'은 숫자 또는 문자입니다.
MSSQL_LCID SQL Server에 사용할 언어 ID를 설정합니다. 예를 들어 1042는 한국어입니다.
MSSQL_COLLATION SQL Server에 대한 기본 데이터 정렬을 설정합니다. 이렇게 하면 데이터 정렬에 대한 언어 ID(LCID)의 기본 매핑이 재정의됩니다. Korean_Wansung_CS_AS는 한국어 대소문자 엑센트 무시.
MSSQL_MEMORY_LIMIT_MB SQL Server에서 사용할 수 있는 최대 메모리 크기(MB)를 설정합니다. 기본적으로 총 실제 메모리의 80%입니다.
MSSQL_TCP_PORT SQL Server가 수신 대기하는 TCP 포트(기본값 1433)를 구성합니다.
MSSQL_IP_ADDRESS IP 주소를 설정합니다. 현재 IP 주소는 IPv4 스타일(0.0.0.0)이어야 합니다.
MSSQL_BACKUP_DIR 기본 백업 디렉터리 위치를 설정합니다.
MSSQL_DATA_DIR 새 SQL Server 데이터베이스 데이터 파일(.mdf)이 생성되는 디렉터리를 변경합니다.
MSSQL_LOG_DIR 새 SQL Server 데이터베이스 로그(.ldf) 파일이 생성되는 디렉터리를 변경합니다.
MSSQL_DUMP_DIR 기본적으로 SQL Server가 메모리 덤프 및 기타 문제 해결 파일을 보관할 디렉터리를 변경합니다.
MSSQL_ENABLE_HADR 가용성 그룹을 사용하도록 설정합니다. 예를 들어 '1'은 사용이고 '0'은 사용 안 함입니다.
MSSQL_AGENT_ENABLED SQL Server 에이전트를 사용하도록 설정합니다. 예를 들어 'true'는 사용이고 'false'는 사용 안 함입니다. 기본적으로 에이전트는 사용하지 않도록 설정됩니다.
MSSQL_MASTER_DATA_FILE master 데이터베이스 데이터 파일의 위치를 설정합니다. SQL Server를 처음 실행할 때까지 이름은 master.mdf 여야 합니다.
MSSQL_MASTER_LOG_FILE master 데이터베이스 로그 파일의 위치를 설정합니다. SQL Server를 처음 실행할 때까지 이름은 master.ldf 여야 합니다.
MSSQL_ERROR_LOG_FILE 오류 로그 파일의 위치를 설정합니다.

 

https://docs.microsoft.com/ko-kr/sql/linux/sql-server-linux-configure-environment-variables?view=sql-server-ver15

 

 

Container 진입

docker exec -it MSSQL2022  bash

 

docker run -e ACCEPT_EULA=Y -e MSSQL_PID='Developer' -e MSSQL_SA_PASSWORD='<YourStrong!Passw0rd>' -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d mcr.microsoft.com/mssql/server:2019-latest

 

 

docker run -e ACCEPT_EULA=Y -e MSSQL_PID="Developer" -e MSSQL_SA_PASSWORD="<YourStrong!Passw0rd>" -e MSSQL_TCP_PORT=1234 -p 1234:1234 -d mcr.microsoft.com/mssql/server:2019-latest

 

 

연결확인

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<SA Passw0rd>"

외부

sqlcmd -S <ip_address>,1433 -U SA -P "<SA Passw0rd>"

728x90
반응형

'Docker' 카테고리의 다른 글

[Docker] 도커 개념 설명 | 도커는 왜 사용하는 걸까?  (0) 2025.02.19
Docker Compose File  (0) 2025.02.18
도커 사용법  (1) 2025.02.18
Docker환경에서 MSSQL설치하기  (0) 2025.02.18
Docker 명령어 구조  (1) 2024.09.03

+ Recent posts