티스토리 뷰
이번 포스팅에서는 도커 이미지 백업 및 롤백 과정에 대해 살펴보겠습니다.
지난 시간까지 도커 폐쇄망 구축 및 도커 내부 저장소 설치 과정에 대해 살펴보았습니다.
지난 포스팅은 다음을 참고하시기 바랍니다.
[Spring Boot] git clone을 활용한 Spring Boot 프로젝트 repository 이관
[Spring Boot] gitlab & Eclipse 연동을 통한 Spring Boot 개발 프로젝트 구축
[Spring Boot] Spring Boot Maven Repo 구축(Nexus2 OSS 내부 저장소)
[Spring Boot] Spring Boot Maven Repo 연동(Nexus2 OSS 내부 저장소)
[Spring Boot] Spring Boot Structure
도커 빌드
먼저 도커 이미지를 빌드해 보도록 하겠습니다.
지난 시간에 연결한 Nexus3 도커 레지스트리의 httpd 서버를 이용하여 Hello.html을 호출하는 과정을 먼저 살펴보겠습니다.
1. 도커 빌드
- Dockerfile 작성
[root@nrson httpd]# cat Dockerfile
FROM httpd:latest
COPY ./public-html/ /usr/local/apache2/htdocs
[root@nrson httpd]#
도커 파일은 위와 같이 간단하게 작성하였습니다.
httpd:latest를 베이스 이미지로 하며, 현 public-html 디렉토리 하위를 apache default DocumentRoot인 /usr/local/apache2/htdocs로 복사하여 기동하는 과정입니다.
- Docker 빌드
[root@nrson httpd]# ls
Dockerfile my-apache2.tar public-html
[root@nrson httpd]# docker build -t 192.168.56.107:9090/privatedockereg/my-apache2:latest .
Sending build context to Docker daemon 158.9 MB
Step 1/2 : FROM httpd:latest
---> ee39f68eb241
Step 2/2 : COPY ./public-html/ /usr/local/apache2/htdocs
---> d7376096de75
Removing intermediate container a953f0af5e29
Successfully built d7376096de75
[root@nrson httpd]#
위와 같은 구성으로 docker build를 수행합니다. -t 태그 옵션으로 도커 레지스트리 경로를 지정해 주도록 합니다.
[root@nrson httpd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.107:9090/privatedockereg/my-apache2 latest d7376096de75 43 seconds ago 154 MB
192.168.56.107:9090/privatedockereg/httpd latest ee39f68eb241 4 days ago 154 MB
docker.io/httpd latest ee39f68eb241 4 days ago 154 MB
[root@nrson httpd]#
빌드가 정상적으로 완료되면 다음과 같이 docker images로 docker image를 확인할 수 있습니다.
2. custom apache httpd 기동 및 테스트
다음으로 docker 기동 및 테스트 과정입니다.
[root@nrson httpd]# docker run -dit --name my-running-app -p 8090:80 192.168.56.107:9090/privatedockereg/my-apache2:latest
d8411bb616f2b94aa044cf2d0f8c9f06c2d7434ef55d877dd6f0f7c6c999ef23
[root@nrson httpd]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8411bb616f2 192.168.56.107:9090/privatedockereg/my-apache2:latest "httpd-foreground" 26 seconds ago Up 18 seconds 0.0.0.0:8090->80/tcp my-running-app
[root@nrson httpd]#
위와 같이 docker run 명령어로 해당 docker를 기동합니다.
정상적으로 기동이 완료되었는지 docker ps -a로 확인 후 아래와 같이 화면을 호출해 보도록 합니다.
위와 같이 public-html/Hello.html이 정상적으로 호출되면 Dockerfile을 사용한 빌드 및 기동이 완료된 것이라 판단할 수 있습니다.
3. custom apahce httpd push
다음으로 앞서 살펴봤던 Nexus3 도커 레지슽트리 포스팅과 같이 해당 이미지를 push해 보도록 하겠습니다.
[root@nrson httpd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.107:9090/privatedockereg/my-apache2 latest d7376096de75 12 minutes ago 154 MB
192.168.56.107:9090/privatedockereg/httpd latest ee39f68eb241 4 days ago 154 MB
docker.io/httpd latest ee39f68eb241 4 days ago 154 MB
[root@nrson httpd]# docker push 192.168.56.107:9090/privatedockereg/my-apache2:latest
The push refers to a repository [192.168.56.107:9090/privatedockereg/my-apache2]
cfb6da81464a: Pushed
635721fc6973: Layer already exists
bea448567d6c: Layer already exists
bfaa5f9c3b51: Layer already exists
9d542ac296cc: Layer already exists
d8a33133e477: Layer already exists
latest: digest: sha256:8b31bc5d617a1fe04a1711d816d8f083e73be76bd38eb0bd2838f00a799737db size: 1574
[root@nrson httpd]#
정상적으로 Push가 완료되면
다음과 같이 my-apache2 이미지도 업로드 된것을 확인할 수 있습니다.
Docker images backup
[root@nrson httpd]# docker save -o my-apache2.tar 192.168.56.107:9090/privatedockereg/my-apache2:latest
[root@nrson httpd]# ls -la
total 155216
drwxr-xr-x 3 root root 65 Jul 17 02:13 .
drwxr-xr-x 3 root root 19 Jul 17 00:24 ..
-rw-r--r-- 1 root root 64 Jul 17 00:28 Dockerfile
-rw------- 1 root root 158937088 Jul 17 02:13 my-apache2.tar
drwxr-xr-x 2 root root 24 Jul 17 00:26 public-html
[root@nrson httpd]# date
Wed Jul 17 02:13:39 EDT 2019
[root@nrson httpd]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd92af630249 192.168.56.107:9090/privatedockereg/my-apache2:latest "httpd-foreground" 8 minutes ago Up 8 minutes 0.0.0.0:8090->80/tcp my-running-app
[root@nrson httpd]# docker stop bd92af630249;docker rm bd92af630249
bd92af630249
bd92af630249
[root@nrson httpd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.107:9090/privatedockereg/my-apache2 latest d7376096de75 15 minutes ago 154 MB
192.168.56.107:9090/privatedockereg/httpd latest ee39f68eb241 4 days ago 154 MB
docker.io/httpd latest ee39f68eb241 4 days ago 154 MB
[root@nrson httpd]# docker rmi 192.168.56.107:9090/privatedockereg/my-apache2:latest
Untagged: 192.168.56.107:9090/privatedockereg/my-apache2:latest
Untagged: 192.168.56.107:9090/privatedockereg/my-apache2@sha256:8b31bc5d617a1fe04a1711d816d8f083e73be76bd38eb0bd2838f00a799737db
Deleted: sha256:d7376096de75a021b08eaab9410fb9764874ab529e178d1a0a7d3a3504048d26
Deleted: sha256:970c3b3bfb83738fc7ce6ac40b1c51119db0e1e140e441e5ed4dd10d9d5ec755
[root@nrson httpd]# docker ps -a
doCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@nrson httpd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.107:9090/privatedockereg/httpd latest ee39f68eb241 4 days ago 154 MB
docker.io/httpd latest ee39f68eb241 4 days ago 154 MB
[root@nrson httpd]#
Docker 이미지를 백업 받는 방법은 간단합니다. docker save 명령어를 통해 다운 받을 수 있으며 테스트를 위해 백업 이후 기존에 기동 중이던 docker process를 stop하고 이미지를 삭제하도록 합니다.
Docker images rollback
다음은 백업 받은 파일을 기반으로 도커 이미지를 롤백하는 과정입니다.
[root@nrson httpd]# docker load < my-apache2.tar
cfb6da81464a: Loading layer [==================================================>] 4.096 kB/4.096 kB
Loaded image: 192.168.56.107:9090/privatedockereg/my-apache2:latest
[root@nrson httpd]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.56.107:9090/privatedockereg/my-apache2 latest d7376096de75 18 minutes ago 154 MB
docker.io/httpd latest ee39f68eb241 4 days ago 154 MB
192.168.56.107:9090/privatedockereg/httpd latest ee39f68eb241 4 days ago 154 MB
[root@nrson httpd]#
롤백 과정역시 docker load라는 명령으로 손쉽게 진행할 수 있습니다.
로드가 완료되면 docker images로 복원된 이미지를 확인할 수 있습니다.
이번 포스팅에서는 도커 이미지를 빌드하고 커스텀 이미지를 백업 받고 롤백하는 과정에 대해 살펴보았습니다.
'⑤ 개발, 데이터베이스 > ⓢ Spring Boot' 카테고리의 다른 글
Lombok 라이브러리 Eclipse 환경에 적용하기 (0) | 2020.09.06 |
---|---|
[Spring Boot] Nexus2 -> Nexus3 Repository 업그레이드 (1) | 2019.07.29 |
[Spring Boot] Nexus3 도커 레지스트리 (1) | 2019.07.29 |
[Spring Boot] REST API (Hello World) 구현 (0) | 2019.07.29 |
[Spring Boot] Spring Boot Structure (0) | 2019.07.29 |
- Total
- Today
- Yesterday
- Docker
- git
- openstack tenant
- openstack token issue
- apache
- SWA
- SA
- 마이크로서비스 아키텍처
- JEUS7
- 오픈스택
- 마이크로서비스
- jeus
- nodejs
- Architecture
- webtob
- MSA
- wildfly
- kubernetes
- JEUS6
- aws
- JBoss
- OpenStack
- 아키텍처
- 쿠버네티스
- TA
- API Gateway
- Da
- aa
- k8s
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |