일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Docker
- 백준
- 맥북
- dacon
- gs25
- 편스토랑 우승상품
- Real or Not? NLP with Disaster Tweets
- 프로그래머스 파이썬
- programmers
- 더현대서울 맛집
- hackerrank
- Baekjoon
- AI 경진대회
- 캐치카페
- 금융문자분석경진대회
- ChatGPT
- Git
- 파이썬
- 코로나19
- ubuntu
- 프로그래머스
- SW Expert Academy
- Kaggle
- 데이콘
- 편스토랑
- 자연어처리
- 우분투
- leetcode
- github
- PYTHON
- Today
- Total
솜씨좋은장씨
[Docker] docker commit 명령어 사용하는 방법! 본문
서버에 올라가있는 도커 컨테이너 이미지 속 라이브러리를 업데이트를 해야할 때 업데이트를 하는 방법은
1. 업데이트 된 버전으로 다시 설치하고 도커 이미지를 다시 말아서 다시 올리기
2. docker exec -it [컨테이너명] /bin/bash 또는 docker exec -it [컨테이너명] /bin/sh 로 도커 컨테이너에 접속한 뒤
해당 라이브러리만 지웠다가 다시 설치하고 나온 뒤에 docker restart [컨테이너명] 해주기
위와 같이 2가지 방법이 있습니다.
1번의 경우에는 서버를 내렸다가 올려도 변경한 버전이 바뀌지 않고 계속 유지가 되지만
2번의 경우에는 별도의 작업을 진행해주지 않으면 서버가 내려갔다가 올라갔을때
처음에 이미지를 생성할 때 설치했던 버전으로 다시 돌아가서 서버가 내려갔다가 올라올 때 마다
다시 업데이트를 해주어야하는 번거로움이 있습니다.
2번의 방법에서 서버를 재부팅해도 컨테이너에서 수정했던 사항을 그대로 유지하도록 하는 방법에 대해서 공유합니다.
👨🏻💻 컨테이너 접속하고 작업하기
$ docker exec -it [컨테이너명] /bin/bash
위와 같은 에러 발생 시에는 아래의 명령어 사용
$ docker exec -it [컨테이너명] /bin/sh
위와 같은 방법으로 컨테이너에 접속하여 필요한 작업을 진행합니다.
* 필요한 작업? - 라이브러리 버전 바꾸기, 이미지 내부에 있는 코드 수정하기 등등
작업이 끝나면
$ exit
exit 명령어로 컨테이너에서 나옵니다.
👨🏻💻 조금 전 변경한 사항으로 새로운 이미지 만들기 ( docker commit )
조금 전에 도커 컨테이너에 접속하여 수정한 사항을 반영한 새로운 도커 이미지를 만드는 작업입니다.
$ docker commit [컨테이너명] [원하는 이미지명:태그]
여기에는 docker 명령어 중에서 docker commit 명령어를 활용합니다.
내가 조금 전 접속해서 수정 작업을 한 컨테이너명을 docker commit 다음에 넣어주고
그 다음에는 새로 만드는 이미지의 이름과 태그를 적어주면 됩니다.
만약
내가 접속해서 수정 작업을 진행한 컨테이너명 -> qas-api_consumer
새로 만들기를 원하는 이미지명 -> qas-api
새로 만드는 이미지에 붙이고 싶은 태그 -> 0.04
위와 같다고 한다면
$ docker commit qas-api_consumer qas-api:0.04
위와 같이 실행해주면 됩니다.
잠시 기다렸다가 실행이 완료 되었을 때
$ docker images
위의 명령어로 이미지 목록을 확인하여 내가 방금 생성한 이미지가 잘 존재하는지 확인해봅니다.
REPOSITORY TAG IMAGE ID CREATED SIZE
qas-api 0.04 698558b0ca05 22 hours ago 1.21GB
spell_check nl42-0.04 4b6507466d88 4 days ago 1.21GB
위와 같이 목록에 잘 보인다고 하면 잘 생성된 것 입니다.
👨🏻💻 docker-compose 파일에서 이미지 이름 수정하기
마지막으로 docker-compose에서 바뀐 이미지를 실행할 수 있도록 이미지 명을 수정해주어야합니다.
version: '3'
services:
app:
image: qas-api:0.03
container_name: qas-api_consumer
ports:
- "14241:14241"
network_mode: host
------------------------------------ 이하 생략 ------------------------------------
기존에 위와 같이 qas-api:0.03 으로 이미지 명이 되어있었다면
image: qas-api:0.03 -> image: qas-api:0.04
이를 내가 새로 만든 이미지 명으로 바꾸어 줍니다.
version: '3'
services:
app:
image: qas-api:0.04
container_name: qas-api_consumer
ports:
- "14241:14241"
network_mode: host
------------------------------------ 이하 생략 ------------------------------------
위와 같이 변경한 이후에
$ docker-compose -f docker-compose down
$ docker-compose -f docker-compose up -d
위의 명령어로 컨테이너를 내렸다가 올려주면 됩니다.
이렇게 하면
2. docker exec -it [컨테이너명] /bin/bash 또는 docker exec -it [컨테이너명] /bin/sh 로 도커 컨테이너에 접속한 뒤
해당 라이브러리만 지웠다가 다시 설치하고 나온 뒤에 docker restart [컨테이너명] 해주기
이 방법을 사용하더라도 서버가 재부팅 되었을 때 내가 컨테이너에 들어가서 바꾸었던 내용이 그대로 유지됩니다.
읽어주셔서 감사합니다.