TIL- Docker

kyoungyeon·2023년 10월 9일
0

TIL

목록 보기
92/110

Status

Docker 드디어..!

라고 하지만
실은 정석이 아닌, 새로운 방법을 익혔다.

아쉬운 것은 솔루션 공식문서가 너무 제한적이고 실 사례가 적다.
구글신이 나를 버린건지.
그래서 DockerFile 작성은 문서 어디에도 없었다.

공부했던 내용

  • Docker Image 와 Container 관계

  • Docker tar.gz 과 bin 의 관계

    • Docker에서 tar 파일은 왜 만들고, 배포하는건지
  • Container/ image를 올리기 위한 들어가는 Docker 파일(확인되지 않음) 외 env. json 파일의 역할은 무엇인지 등등


실은,
자체 Vendor사 Cloud에서 docker.tar.gz 파일과 install-docker.bin파일을 제공하고 있었는데 .
둘 중 하나만 있으면 되는 줄 알았다.

사수님이 tar 파일만 주길래
docker 파일이겠거니. 처음엔 그것만 압축해제 해서 보다가 계속 막힘.

tar 파일이 왜 있고, 왜 굳이 gz 파일로 또다시 압축한건지 알아보기 시작함.

linx- tar,gz, tar.gz,etc

tar -xvzf [file.tar.gz]

# x 실행 / z 압축 해제과정 / 

당연히 나는 install docker.bin 파일만 받으면 되는줄 알고 삽질을 엄청 했다.

./install

시 image 파일이 올라가질 않았다.
이유는 아직도 잘 모름..

docker load -i <img-path> (.targ)
# i == input  : 불러올 파일 명

위 코드에 힌트가 있는듯 한데, 알아보니,

해당 과정은 주로 이미지 백업 후 다른 Docker가 설치된 PC에서 로딩하여 컨테이너 제작 때 사용됩니다.

라고 한다.

Questions

  • 0 ) 이미지 백업 파일인 tar를 docker image에 로드하는 방식이란다.
    그런데 image 어디있는데..? == tar 파일..?

  • 1) Docker 은 container를 돌려주는 engine이라고 한다면
    결국 platform은 어디서 실행되는건지

  • 2) image는 layer대로 쌓이던데, 실제로 install file내 json이나 layer.tar 파일을 보면 분명 docker image를 위한 파일인데

    • 만드는게 아니라 불러오는 파일인건가..?

Solved

  • backup 파일을 저장후 docker image load를 한다.
docker save [OPTIONS] IMAGE [IMAGE...]

-docker iamge를 tar.gz으로 gzip 이용해서 저장함

docker save myimage:latest | gzip > myimage_latest.tar.gz
  • docker image를 tar 등의 압축파일로 부터 로딩하는 게 맞음.
docker load [OPTIONS]
# 
Load an image or repository from a tar archive (even if compressed with gzip, bzip2, or xz) from a file or STDIN. It restores both images and tags.
  • Examples
docker load < busybox.tar.gz

Loaded image: busybox:latest
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              769b9341d937        7 weeks ago         2.489 MB

docker load
docker save

Docker Container

  • 컨테이너는
    host , (즉 주인공 - vm, windows,linux등 최초의 OS 컴퓨터)
    기반으로 돌아가는 프로세스

  • vm 에서 ova를 설치해서 리소스를 잡아먹는것 보단, vm과 격리된 별도의 환경(Docker hub)에서 일반 프로세스 처럼 빠르게 돌아간다.

    • 체감상, ROCKY LINUX 8을 설치했고( 공식문서 guide 대로 따라함 ) 그 위에 DOCKER를 활용해서 SOAR를 install 했는데,
      솔직히 docker 설치시 드는 용량이나, ESXi VM에 ova 설치때와 용량을 동일하게 설치하여 진행했기에, 재설치를 통해 최소 용량에 대한 확인이 필요할 듯하다.
    • 빠른..건지도 솔직히 의문이 든다.
    • Docker 배포의 경우 오늘의 경우 GUI가 로딩 되지 않는 현상이 있었다.
    • 물론 사설 ip 대역대라서인건지.. 이유를 못찾고 헤맴.
    • 그래서 docker ps를 통해 container가 분명 올라가 있는데, 무중단 배포가 되는건가 싶긴함.
    • 이 부분은 조만간 리팩토링 해봐야 할것 같다.

    그래서 tar 왜 쓰는데?

  • 이미지 복사, 백업을 위해서

    장점)

  • 인터넷이 연결되지 않는 내부망 사용시 외부 인터넷을 막았을 때 유용하게 원하는 이미지를 다운 받을수있다.

    • DockerHub 연결 없이 이미지 다운 받을 수 있다.
    • 보안성이 높아진다
  • 생성된 tar 파일 그대로 git/ FTP/ USB를 통해 이미지 로드할 서버를 변경할 수있다.

  • DockerFile 안만들어도 된다!

    단점 )

    • 단 이미지 파일이 크면 복사시 느려지는 단점이 있다.
    • image는 immutable하기 때문에 image 자체의 설정을 변경할때는 DockerFile을 사용하면 될려나..? 지금처럼 tar.gz 파일내 DockerFile이 보이지 않으면 설정 변경이 어려워서 결국 docker image를 다시 만들어야 할 경우가 생길 수 있음.
    • 또한 image 외의 서버 Version 및 Interface 변경 등 Update로 인해 Docker image 호환성 문제가 생길수 있음.
    • Docker File을 사용할수 없다.
      • DockerFile로 자율적으로 버전이나 실행 CMD를 활용할 수 있을텐데 다 설정이 되어있는 상태서 불러만 오다보니 유연성이 떨어짐.
  • container 확인

# 실행중, 가동 멈춘 컨테이너 다 보여줌
docker ps -a 

# 지금 실행중인것 
docker ps 

  • Status == Up 이 되어있는것만 실행중인 것임.

  • container 실행

# docker run [Option] imageName [:tag] [/bin...]

docker run -p 8080:80 nginx:latest 
# 8080 docker port를 80 번 포트로 전환


docker run -d --name web -p 8080:80 nginx:latest

# container 이름 설정 및 tag 설정 다 할수있음.
  • container/ image 내 cli 환경 들어가기
docker container/image exec -it [container name / containerID/imageID ] bash

docker container exec -it soar bash

Docker Image

  • 이미지 저장
docker save [옵션] [filename] [image name/imageID]

docker save -o example.tar  soar/fortinet-fotisoar-1:7.x.1 
  • 저장된 이미지 도커로 불러오기
# mac 의 경우 
gzcat ./$docker_image_file | docker load > /dev/null
# 일반 linux 경우
zcat ./$docker_image_file | docker load > /dev/null
  • 이미지 로드
docker load -i [이미지 경로/ filename. tar]

docker load -i /home/admin/example.tar

windows-docker
docker - 구조 도식화

이재홍 DockerFile- tar 추가

docker img tar파일 저장

docker tar로 저장

Details

  • 도커 architecture 에 대한 숙지
  • docker composed 공부 (기존 docker 와의 차이)
  • docker clinet vs server 차이
  • docker CMD 알기
profile
🏠TECH & GOSSIP

0개의 댓글