본문 바로가기
kubenetes

docker 이미지 수정하는 방법

by kyeongseo.oh 2022. 4. 5.

harbor에서 image를 pull 받은 후 해당 이미지를 수정해 배포해본다.

modifytest image를 변경해본다.

[root@kw1 flaskImage]# docker images
REPOSITORY                                      TAG       IMAGE ID       CREATED        SIZE
modifytest                                      latest    fd5a051718ce   4 hours ago    917MB



1. modifytest 이미지를 통해 docker 컨테이너를 생성한 후 bash shell을 통해 컨테이너에 접속한다.

 

이미지 이름을 사용할 때는 아래 커맨드 사용

docker run -it [이미지 이름] /bin/bash
docker run -it modifytest /bin/bash

이미지 id 사용할 때는 아래 커맨드 사용

docker run -it [이미지 ID] /bin/bash
docker run -it fd5a051718ce /bin/bash

 

이미지 이름을 사용해 컨테이너에 접속했음

[root@kw1 flaskImage]# docker run -it modifytest /bin/bash

 

2. 이미지를 수정한다.

기존 modifytest 이미지는 python flask를 사용해 윈터 gif를 출력함

gif를 다른 이미지로 변경 후 이미지를 commit 할 예정임

 

wget으로 새로운 gif를 jo.gif라는 이름으로 다운로드한다.

root@470d3b7e45a2:/app/static# wget -O jo.gif https://t1.daumcdn.net/cafeattach/1WjuI/2636c1c0653667b79934c8e32c905f58301a0fe2
--2022-04-04 15:59:25--  https://t1.daumcdn.net/cafeattach/1WjuI/2636c1c0653667b79934c8e32c905f58301a0fe2
Resolving t1.daumcdn.net (t1.daumcdn.net)... 121.53.85.3, 2404:4600:9:201:211:249:219:23
Connecting to t1.daumcdn.net (t1.daumcdn.net)|121.53.85.3|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2311808 (2.2M) [image/gif]
Saving to: ‘jo.gif’

jo.gif                                                      100%[========================================================================================================================================>]   2.20M  --.-KB/s    in 0.1s

2022-04-04 15:59:25 (16.8 MB/s) - ‘jo.gif’ saved [2311808/2311808]

 

/app/static 디렉토리에 jo.gif가 잘 다운된 것을 확인한다.

root@470d3b7e45a2:/app/static# ls
img.jpg  jo.gif  winter.gif

 

/app/templates/index.html 파일을 수정한다.

filename='./winter.gif' -> filename='./jo.gif'로 수정

root@470d3b7e45a2:/app/static# vim /app/templates/index.html
root@470d3b7e45a2:/app/static# cat /app/templates/index.html
<!doctype html>
<html>
  <head>
  </head>
  <body>
    <img src="{{ url_for('static', filename='./jo.gif') }}">
  </div>
  </body>
</html>



★ 컨테이너 종료하지 말고 다른 터미널을 열어서 아래 작업을 진행한다.

docker ps로 수정한 컨테이너 id를 복사한다.

[root@kw1 flaskImage]# docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS       PORTS     NAMES
b66c5bf9cc74   fd5a051718ce             "python /app/ksFlask…"   4 hours ago   Up 4 hours             k8s_modify_modify_default_eabe26a8-1610-4065-8830-6489b5d04dad_0

 

3. 수정한 이미지를 commit 한다.

docker commit 커맨드로 수정한 내용을 반영한 새로운 이미지를 생성한다.

docker commit [컨테이너 id] [이미지 이름:태그]


그냥 commit하니 이미지가 아무런 동작도 안 함. commit 할 때 CMD 명령을 추가해줌(Dockerfile과 동일하게)

[root@kw1 ~]# docker commit --change='CMD ["python", "ksFlask.py"]' b66c5bf9cc74 modifytest:v5
sha256:488825293a20e968759025bfc7667f30d6c16855b90fe8a8137f4befb9562e15

 

이제 컨테이너에서 나가도 된다.

root@470d3b7e45a2:/app/static# exit

 

4. 잘 반영되었는지 확인한다.

docker run으로 이미지를 실행해본다.

docker run -p 0.0.0.0:5000:5000/tcp modifytest:v5

 

이미지가 변경 완료

'kubenetes' 카테고리의 다른 글

k8s external etcd 구성  (1) 2022.09.17
etcd backup, restore  (0) 2022.09.15
k8s flask web 수정하기  (0) 2022.04.04
ImagePullBackOff error 해결  (0) 2022.04.02
kubernetes 실행 중인 pod에 접속해 package 설치  (0) 2022.03.30

댓글