학습주제
학습내용
docker images도 같은 명령어임
시스템에 설치된 이미지르 리스팅
리포지토리를 보면 네임스페이스/이미지이름 전체를 이름이라 하기도 하고, 뚜렷한 규칙이 있진 않음. 태그가 버전 정보. 변형 정보. 특별한 소프트웨어, 노드를 썼으면 리눅스 운영체제의 경우 :alpin이렇게 특수 정보가 들어갔었음. 이런것들을 나타내줄수 있음.
별칭들이 있을 수 있을 수 있음. 이미지 ID가 같음. 전에 tag 명령을 썼었는데 이건 이름을 바꾸는게 아니라 별칭을 만들어주는 것임.
마치 이름을 바꾸는 것처럼 보이긴 함.
첫번째 인자에 두번째 인자의 별칭을 부여함.
이미지 아이디는 동일함.
정말 유니크한 ID는 이미지 ID
이미지 호출은 리포지토리이름:TAG 식으로 호출하게됨.
허브에서 받아도 account가 없는 경우도 있음
tag
버전이나 변형을 나타냄
기본은 latest
버전이 무엇이냐, OS가 무엇이냐처럼. 정해진 포맷이 없음.
보통 다운받으면 어카운트ID/이미지
공식이미지는 네임스페이스가 없음
:버전 이거 생략 가능
오피셜이면
앞에 네임스페이스 없음
로컬에서 개발하고있고, 아직 push 안했다면 마찬가지로 네임스페이스 아직 없음.
push 하기 전에 tag로 별칭 부여
공식이지미는 네임스페이스 없음
ubuntu
node
superset의 경우 오피셜이 아니라 앞에 apache 어카운트 ID가 있는게 보임
버전들 별로 어떤 서버, 아키텍쳐를 지원하는지 아래 태그가 붙어있는게 보임
수퍼셋의 경우 딱 2개 지원함
터미널을 통해 데모해본다
임의의 폴더를 생성함
tocuh Dockerfile
베이스 소프트웨어를 FROM에서 node를 선택했기 때문에 알아서 설치해줄 것임.
cmd 때 런타임으로 node를 써도 문제 없음
별개로 더 설치할게 있으면 RUN 추가
간단하게 프린트.
노드가 설치되어있는걸 확인함
잘 실행됨
도커 이미지를 빌드해본다
그 전에 docker image ls
전에 설치했던 목록이 뜸
헬로우 월드 도커가 이미 있고, 별칭이 같이 있음 이걸 삭제하려면
docker image rm -f 이미지ID
삭제가 됨
도커 빌드를 시도한다
플랫폼이라는 옵션을 지정할 수 있다
docker build -t hello-world-docker .
.은 도커파일이 여기에 있다는 뜻.
이렇게 되면 운영체제 칩 반영해서 만들어지기에
docker build --platform linux/amd64 -t hello-world-docker .
뭔가 에러가 남
인터넷에서 받아와야하는데 로그인 필요함
프롬프트를 띄워야할꺼 같음
뭐지 401관련 인증 에러가 뜬다
winpty를 써야한다 여기서도
추측인데 현재 내 도커 엔진 로그인이 jongwook으로 되어있어서 안되는거 같기도 하다
일단 도커 엔진를 재실행해본다
바꿔주었다
이게 문제 맞았음. 엔진에서 만료된 계정으로 로그인하고 있었더니 충돌나고 있었음.
다시 하니까 정상적으로 돌아감
도커 컨테이너를 돌려본다
docker run hello-world-docker
올라와있음
태그가 latest로 나와있음
도커 허브에 로그인해서 방금 만든 이미지를 업로드할
리포를 만들어본다
리포를 생성함
settings로 가면
여기서 이미지를 삭제할 수 있음
이제 별칭을 만들어야함
앞에 네임스페이스를 붙여줌
여기에 :뒤에 버전을 붙여줄 수도 있음
이미지 ID가 같은 걸 확인함
로그인 된 상황이라면 바로 push 하면 됨
뭐지
에어플로우도 들어간 느낌임
아님 제대로 들어감
보니까 리포 이름과, 이미지 이름을 일치시켜야 함
이제 다른서버에서 다운받아서 컨테이너에서 실행시켜본다
https://labs.play-with-docker.com/
도커허브 계정 있으면 됨
add new instance
이미 도커 가 설치되어 있음
alt enter
docker pull kjw9684k/hello-world-docker
상당한 시간이 걸린다 엄청나게 느림.
성공함
제대로 들어옴
보면 이미지 ID가 고유한 것을 알 수 있음
이미지를 컨테이너에서 실행시켜본다
전체적인 플로우를 실습해봤다.