라고 하지만
실은 정석이 아닌, 새로운 방법을 익혔다.
아쉬운 것은 솔루션 공식문서가 너무 제한적이고 실 사례가 적다.
구글신이 나를 버린건지.
그래서 DockerFile 작성은 문서 어디에도 없었다.
Docker Image 와 Container 관계
Docker tar.gz 과 bin 의 관계
Container/ image를 올리기 위한 들어가는 Docker 파일(확인되지 않음) 외 env. json 파일의 역할은 무엇인지 등등
실은,
자체 Vendor사 Cloud에서 docker.tar.gz 파일과 install-docker.bin파일을 제공하고 있었는데 .
둘 중 하나만 있으면 되는 줄 알았다.
사수님이 tar 파일만 주길래
docker 파일이겠거니. 처음엔 그것만 압축해제 해서 보다가 계속 막힘.
tar 파일이 왜 있고, 왜 굳이 gz 파일로 또다시 압축한건지 알아보기 시작함.
tar -xvzf [file.tar.gz]
# x 실행 / z 압축 해제과정 /
당연히 나는 install docker.bin 파일만 받으면 되는줄 알고 삽질을 엄청 했다.
./install
시 image 파일이 올라가질 않았다.
이유는 아직도 잘 모름..
docker load -i <img-path> (.targ)
# i == input : 불러올 파일 명
위 코드에 힌트가 있는듯 한데, 알아보니,
해당 과정은 주로 이미지 백업 후 다른 Docker가 설치된 PC에서 로딩하여 컨테이너 제작 때 사용됩니다.
라고 한다.
0 ) 이미지 백업 파일인 tar를 docker image에 로드하는 방식이란다.
그런데 image 어디있는데..? == tar 파일..?
1) Docker 은 container를 돌려주는 engine이라고 한다면
결국 platform은 어디서 실행되는건지
2) image는 layer대로 쌓이던데, 실제로 install file내 json이나 layer.tar 파일을 보면 분명 docker image를 위한 파일인데
docker save [OPTIONS] IMAGE [IMAGE...]
-docker iamge를 tar.gz으로 gzip 이용해서 저장함
docker save myimage:latest | gzip > myimage_latest.tar.gz
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.
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
컨테이너는
host , (즉 주인공 - vm, windows,linux등 최초의 OS 컴퓨터)
기반으로 돌아가는 프로세스
vm 에서 ova를 설치해서 리소스를 잡아먹는것 보단, vm과 격리된 별도의 환경(Docker hub)에서 일반 프로세스 처럼 빠르게 돌아간다.
docker ps
를 통해 container가 분명 올라가 있는데, 무중단 배포가 되는건가 싶긴함. 이미지 복사, 백업을 위해서
장점)
인터넷이 연결되지 않는 내부망 사용시 외부 인터넷을 막았을 때 유용하게 원하는 이미지를 다운 받을수있다.
생성된 tar 파일 그대로 git/ FTP/ USB를 통해 이미지 로드할 서버를 변경할 수있다.
DockerFile 안만들어도 된다!
단점 )
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 설정 다 할수있음.
docker container/image exec -it [container name / containerID/imageID ] bash
docker container exec -it soar bash
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
이미지 목록 확인
docker images
Rocky linux라는 특수한 환경이라, 실은 Docker 배포시 tar.gz 관련 자료를 medium 에서 겨우 찾았는데,
Docker- 이미지 수동 빌드, 스크립트 작성, cotainer 실행
실은 OS만 다를뿐 꽤 문서가 많았다.
windows-docker
docker - 구조 도식화