KDT - 도커 이미지 구조 이해 및 업로드
도커 이미지 -> 컨테이너 실행에 필요한 실행파일, 라이브러리, 설정 값 등 포함
이미지 생성 실행 순서
- 어플리케이션 개발
- Dockerfile에 이미지 생성 프로세스 기입
- 빌드해서 이미지로 생성
- 이미지를 활용해 컨테이너 생성
- 컨테이너 작동 여부 테스트
- 도커허브에 업로드
- 1로 돌아가기
1. 이미지 다운 방법
$ docker 이미지 pull 옵션 name:태그버전
- docker.io 가 기본 저장소
$ docker pull 192.168.31.101:9999/도커이미지
프라이빗 저장소 지정 ex) $ docker pull gcr.io/google-samples/hello-app:1.0
$ docker image inspect 이미지명:버전
이미지 내부 정보 확인
- Id : 이미지의 아이디
- RepoTags : 레포지토리:태그명
- Created : 생성일자
- GraphDriver : 이미지 레이어 정보
- Architecture : 씨피유의 아키텍처 정보
**`$ docker pull httpd:2.4`**
조사 명령어
+ 특정 정보만 확인하고 싶은 경우 grep 사용 ex) os정보만 확인하고 싶을 때 -> $ docker image inspect —format=”{{.Os}}” httpd:2.4
or history 사용
$ docker image history httpd:2.4
이미지 구성을 위한 레이어의 계층별 파일은 distribution ID를 부여받고 특정 경로에 저장됨
# cd /var/lib/docker/image/overlay2/distribution/diffid-by-digest/sha256/
# ls 번호일부*
해당 경로에 있는 특정 레이어 파일 조회
하단에 깔리는 이미지는 불변 (Read Only)으로 만들어지며 컨테이너에서는 불변 이미지 위에 conatiner layer가 입출력 가능한 계층으로 추가된다.
따라서 하단의 레이어를 수정할 수는 없어도 추가 레이어를 구성할 수는 있다.
2. 이미지 업로드하기
레지스트리 : Dockerfile을 빌드해서 나온 이미지 or docker commit을 통해 생성한 이미지를 저장하는 사이트 자체
레포지토리 : 해당 사이트에 생성한 본인 명의의 저장소. 퍼블릭과 프라이빗으로 나뉨
1) docker hub 사용
account settings -> 좌측 security 탭 -> access tokens
로그인 방법은 암호로그인, access token, two-factor 세가지가 있다.
two-factor 인증은 otp 같은 것으로 실습을 따로 진행하지는 않겠다.
토큰은 언제든 파기와 재발급이 가능하기에 부담없이 사용해도 된다. 추가로 활성 /비활성도 가능하다.
new access token -> description 아무거나 정의 -> 권한부여는 read, write, delete
create 시 토큰이 발급된다. 다시 확인이 불가능하므로 잘 복사해두도록 하자.
발급 받은 토큰으로 계정인증하기
$ vi .access_token
리눅스에서 파일 생성 후 파일에 토큰 입력
$ cat .access_token | docker login --username 본인계정명 --password-stdin
해당 파일이 위치한 경로에서 명령어로 로그인
$ docker info | grep Username
로그인 여부 확인
2) docker push
일반적으로 hub.docker.com 저장소를 이용하여 이미지를 업로드하지만 docker push도 사용 가능하다.
편리하지만, 복호화가 쉬워 보안에 취약하다는 단점이 있다.
- docker login → 깃허브와 깃의 관계처럼 당연히 내 레포지토리에 올리기 위해서 인증 필요
- docker tag → 버전별로 태그라는것을 붙여서 식별
$ docker login
username : 계정명
password : 비번
docker login 이후 docker push 명령을 원격 레포지토리에 내릴 수 있게 된다.
이 때, 비번은 base64로 저장되어 복호화가 쉬우므로 주의해야 한다.
$ docker logout
정보를 파기하고 싶다면 위의 명령어를 사용하면 된다.