- 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
20.10.18-3 버전 다운로드
sock: connect: permission denied
- docker 명령은 관리자 권한으로 수행해야 함
원칙적으로 docker 명령 사용
- 관리자 사용자 전환 후 사용
- sudo 명령을 통한 관리자 권한으로 실행
현재 사용자를 docker 그룹에 소속시켜 사용
- sudo usermod -aG docker [사용자]
- 명령 수행 후 Linux rebooting 해야 적용됨
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 pull [registry위치] [image name]
- docker hub로 부터 image 다운로드
- docker image는 layer 단위로 다운로드
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는 삭제할 수 없음
'Kubernetes > [구름] 쿠버네티스 전문가 양성 과정 k-digital' 카테고리의 다른 글
[9주-9.30] docker container 명령어2 (0) | 2022.10.05 |
---|---|
[9주-9.29] docker container 명령어 (0) | 2022.09.29 |
[9주-9.27] Docker / 기반 기술 이해 (0) | 2022.09.29 |
[9주-9.26] Docker 이해 (0) | 2022.09.26 |
[8주-9.23] playbook 확장 (0) | 2022.09.23 |