[Docker] Docker6 - 내 이미지 생성하기(1)
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 회원가입이 안되었다면 회원가입 후 로그인을 해야한다.
- alpine 이미지를 Pull하고 run까지 진행해준다.
- Alpine에 hello.sh를 만들어주고 적절한 문구를 작성해 준다.
docker commit hello-test yeontachi/hello-image
- commit 다음에는 컨테이너 이름 또는 ID를 작성하고 마지막에는 새 이미지 이름을 작성해준다. 이미지명을 작성할 때는 userID/name 형태로 작성해야 한다.
- hello.sh를 생성한 후 docker commit을 이용해서 이미지 생성하고, 제대로 생성되었는지 docker images 명령어로 확인해준다.
- tag 명령어를 이용해 tag를 설정해준다.
docker tag userID/imagename 변경할 이미지명:태그
- 태그 설정 후 docker images로 확인해 보면 TAG가 생긴 것을 볼 수 있다.
- push 명령어를 이용해 dockerHub 개인 레포지토리에 저장 및 확인을 해본다.
- 실제 dockerHub 사이트에 들어가서 확인해보면 hello-image 레포지토리가 생긴 것을 확인할 수 있다.
- 모든 컨테이너 이미지들을 삭제해준다.
- 삭제 후 userID/hello-image:v1을 pull을 해본다. pull 이후 docker images로 확인해보면 정상적으로 pull이 된 것을 확인해 볼 수 있다.
- hello-image 터미널을 실행하여 hello.sh가 존재하는지 확인해보면 내용 그대로 파일이 존재하는 것을 확인할 수 있다.
-
/hello.sh 파일에 #!/bin/sh를 추가해주면 해당 이미지가 실행될 때 우리가 적은 문구 “Hello! This is my own docker image!”가 뜨는 것을 확인해 볼 수 있다.
-
#!/bin/sh는 쉘 스크립트의 실행기 선언문, 흔히 쉐뱅(Shebang)이라고 불린다.
#!/실행할_프로그램_경로