공부하기싫어
article thumbnail

 

  • Docker Image 와 Container

docker 는 client / server 구조

참고

- docker home : https://docs.docker.com/

 

docker image는 read only 형식, docker container를 생성하기 위한 template

- 애플리케이션을 위한 라이브러리와 package 그리고 실행환경 template

- 애플리케이션이 실행하는데 필요한 모든 내용이 포함되어 있다.

- docker image 는 layer 구조로 구성되어 있다.

- docker image 는 read only

 

docker container 는 docker image 가 메모리에 로딩된 instance

- docker image 로 부터 생성된 instance

- docker image 부분은 read only

- docker container 가 데이터 기록하는 영역은 read/write 가능 영역

- docker container 생성은 애플리케이션 실행을 의미함

- docker registry는 docker image 저장소로 대표적인 public registry는 docker hub 가 있다.

 

 

  • docker engine 설치

참고

docker desktop : https://docs.docker.com/get-docker/

docker engine : https://docs.docker.com/engine/install/

docker engine(ubuntu) : https://docs.docker.com/engine/install/ubuntu/

 

docker engine

- docker image 와 container 관리

- client 와 통신

- CLI 방식을 이용하여 Docker 운영

 

docker desktop

- GUI 방식으로 Docker 운영

- Linux kernel 이 동작하지 않는 환경에서 Docker 를 운영할 수 있는 환경 제공

 

docker engine 종류

- docker community - 무료

- docker enterprise - 유료

 

 

  • Docker Engine 설치 - ubuntu

docker engine 은 최신 버전을 설치하는 것 보다는 docker engine 버전을 지정하여 설치하는 것이 일반적임

운영 환경에 docker engine 설치시에는 최신버전 보다는 안정적인 지정된 버전을 설치하는 것을 권장

 

- 과거 버전의 docker engine 삭제

sudo apt-get remove docker docker-engine docker.io containerd runc

 

- docker engine 설치를 위한 ubuntu package 설치

sudo apt-get update

sudo apt-get install \

ca-certificates \

curl \

gnupg \

lsb-release

 

- docker 공식 GPG key 설치 (공개키)

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

- ubuntu apt 명령 수행을 위한 docker repository 설

echo \

"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \

 $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

- apt repository update 수행

sudo apt-get update

 

- docker 버전 정보 확인

apt-cache madison docker-ce

출력된 버전 정보 중 하나의 버전 번호를 변수에 등록

VERSION=[docker ce 버전 정보]

 

- 지정된 docker 버전의 docker engine 설치

sudo apt-get install docker-ce=$VERSION docker-ce-cli=$VERSION containerd.io docker-compose-plugin

 

install 1
install 2

20.10.18-3 버전 다운로드

 

docker version

sock: connect: permission denied

 

- docker 명령은 관리자 권한으로 수행해야 함

원칙적으로 docker 명령 사용

   - 관리자 사용자 전환 후 사용

   - sudo 명령을 통한 관리자 권한으로 실행

현재 사용자를 docker 그룹에 소속시켜 사용

   - sudo usermod -aG docker [사용자]

   - 명령 수행 후 Linux rebooting 해야 적용됨

docker 그룹에 소속시킨 후 docker version

 

Amazon EC2에 Docker 설치 - Amazon Linux

sudo yum update

sudo amazon-linux-extras install docker

sudo systemctl start docker

sudo systemctl enable docker

 

 

 

  • Docker 구성 요소

docker engine - docker를 이용한 애플리케이션 실행 환경 및 관리

docker hub - docker image 를 저장하고 공유하는 공식 public docker registry

docker compose - 의존성 있는 독립된 container 에 대한 구성 정보를 YAML 형식으로 작성하여 일원화된 애플리케이션 관리 도구

docker swarm - 여러 docker host 를 클러스터로 구축하여 관리할 수 있는 docker orchestration 도구

docker registry - docker image 저장소, public/private registry로 구분됨

docker machine - VM 및 cloud VM 과 같은 가상 컴퓨터 환경에 도커 환경을 구성하는 시스템

 

 

  • docker host/client 주요 기능

- LXC (LinuX Container) 를 이용한 container 구동

dockerd - docker daemon

containerd - container daemon

runc - OCI (Open Container Initiative) run-time

- 통합 buildkit - docker image 생성 가능

- docker CLI - docker 명령을 실행하는 client 도구

 

 

 

  • docker 기반 container 배포 과정

1. 애플리케이션 코드 작성

- 애플리케이션 개발 환경 필요 - 에디터, 컴파일러, 인터프리터, 디버거 등

2. 베이스 이미지를 이용한 dockerfile 작성

- dockerfile은 docker image 생성을 위한 설계도 역할을 하는 text 파일

- 애플리케이션 코드, 필요한 라이브러리, 실행환경

3. dockerfile build 를 통해 docker image 생성

- 생성된 docker image 를 이용한 container 실행

- docker compose 를 이용한 다중 container 실행

4. docker container 서비스 테스트

 

1~4 과정은 docker image 생성 과정

 

5. public/private registry에 docker image 배포

6. Git 과 같은 버전 관리 도구를 이용해 dockerfile 관리

7. 지속적인 app 관리

 

 

 

 

 

  • Docker Image 명령어
  • docker 명령 구조

docker [명령] [옵션] [대상] [인자]

 

  • docker 일반 명령

docker

- docker client 명령

- docker 명령 사용법 출력

 

docker version 확인 방법

- docker -v

- docker version

--format “{{.Server.Version}}” - Server Version 만 출력

--format “{{json .}}” - json 형식으로 출력

 

docker system info

- docker 구성 정보 확인

- docker system 명령으로도 동일 결과 출력

- docker Root Dir : /var/lib/docker

 

docker system df

docker system df-v

- docker 디스크 사용량 확인

- v - 세부 정보

 

  • docker image 관련 명령

docker image 는 layer 구조 (overlayFS)

docker image를 download 하면 각각의 layer가 다운로드됨

만약 동일한 layer의 내용이 현재 system에 존재한다면 별도의 다운로드를 수행하지는 않음

 

docker image를 현재 시스템에 보유하는 방법

- dockerfile을 build 하여 직접 image 생성 - 직접 생성

- docker registry로 부터 image download

 

docker image 이름 형식

- [repository name] [image name]:[version number]

- 저장소 이름은 생략 가능

- 버전 번호를 생략하면 최신 버전 다운로드

 

docker search [image name]

- docker hub 에서 image 검색

docker search

 

docker pull [registry위치] [image name]

- docker hub로 부터 image 다운로드

- docker image는 layer 단위로 다운로드

docker pull

 

docker image ls

docker images

- 현재 system에 존재하는 image 목록 확인

- layer 저장 위치 : /var/lib/docker/overlay2

 

docker image inspect [image name]

- image 세부 정보

 

docker image history [image name]

- image 구성 layer와 실행 정보 확인

- image 생성을 위한 dockerfile에 사용한 명령 확인 가능

 

docker image rm [image name]

docker rmi [image name]

- docker image 삭제

- 삭제할 image의 정확한 이름 표기

- 현재 container로 동작중인 image는 삭제할 수 없음

docker rm
docker ip addr