1 minute read

commit

commit은 컨테이너 안에서 파일을 만들거나 설정을 바꾼 후, 그 상태를 영구적으로 이미지화 하고 싶을 때 사용을 한다.

docker commit [컨테이너명|ID] 새이미지이름[:태그]

push

push는 내 이미지(로컬에 있는)를 Docker Hub 같은 레포지토리에 업로드하는 명령어이다.

  • 사용 조건:
    • DockerHub 로그인 필요(docker login)
    • 이미지 이름이 username/이미지명 형태여야 한다.
docker push yeontachi/hello-image:v2

pull

Docker Hub에서 원하는 이미지를 다운로드할 때 사용한다.

docker pull 이미지이름[:태그]
  • 동작 흐름:
    • 지정한 이미지가 로컬에 없으면 Docker Hub에서 다운로드
    • run 명령에 이미지가 없다면 pull이 자동으로 먼저 실행되기도 한다.

run

이미지를 기반으로 컨테이너를 실행하는 명령어이다.

docker run [옵션] 이미지명[:태그] [명령어]
  • 동작 흐름:
    • 해당 이미지가 로컬에 없으면 자동으로 Docker Hub에서 Pull
    • 이미지를 컨테이너(실행환경)로 만들어서 실행
    • ENTRYPOOINT 또는 CMD가 설정되어 있다면 자동 실행된다.

내 이미지 만들기 실습

Hello 출력하는 나만의 Alpine 기반 이미지

  • 먼저 docker login을 해준다. docker hub 회원가입이 안되었다면 회원가입 후 로그인을 해야한다.

Alt text

  • alpine 이미지를 Pull하고 run까지 진행해준다.

Alt text

  • Alpine에 hello.sh를 만들어주고 적절한 문구를 작성해 준다.

Alt text

docker commit hello-test yeontachi/hello-image
  • commit 다음에는 컨테이너 이름 또는 ID를 작성하고 마지막에는 새 이미지 이름을 작성해준다. 이미지명을 작성할 때는 userID/name 형태로 작성해야 한다.

Alt text

  • hello.sh를 생성한 후 docker commit을 이용해서 이미지 생성하고, 제대로 생성되었는지 docker images 명령어로 확인해준다.

Alt text

  • tag 명령어를 이용해 tag를 설정해준다.
docker tag userID/imagename 변경할 이미지명:태그
  • 태그 설정 후 docker images로 확인해 보면 TAG가 생긴 것을 볼 수 있다.

Alt text

  • push 명령어를 이용해 dockerHub 개인 레포지토리에 저장 및 확인을 해본다.

Alt text

  • 실제 dockerHub 사이트에 들어가서 확인해보면 hello-image 레포지토리가 생긴 것을 확인할 수 있다.

Alt text

  • 모든 컨테이너 이미지들을 삭제해준다.

Alt text

  • 삭제 후 userID/hello-image:v1을 pull을 해본다. pull 이후 docker images로 확인해보면 정상적으로 pull이 된 것을 확인해 볼 수 있다.

Alt text

  • hello-image 터미널을 실행하여 hello.sh가 존재하는지 확인해보면 내용 그대로 파일이 존재하는 것을 확인할 수 있다.

Alt text

  • /hello.sh 파일에 #!/bin/sh를 추가해주면 해당 이미지가 실행될 때 우리가 적은 문구 “Hello! This is my own docker image!”가 뜨는 것을 확인해 볼 수 있다.

  • #!/bin/sh는 쉘 스크립트의 실행기 선언문, 흔히 쉐뱅(Shebang)이라고 불린다.

#!/실행할_프로그램_경로

Alt text