개발/Docker

Docker - Image 생성

잇(IT) 2022. 5. 31. 13:56
728x90

목차
1. Docker Image

1.1 commit
1.2 export, import

2. Commit
3. tar, load
4. export, import

* 추가 정보


1. Docker Image

 

- Docker에서 서비스 운영에 필요한 서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일을 묶는 형태를 Docker Image라고 한다.

 

1.1 commit

- commit으로 이미지를 생성하여 사용할 수 있고, 생성된 이미지들을 tar로 압축한 다음 load 해서 가져와서 사용할 수도 있다.

 

1.2 export, import

- export로 컨테이너를 내보내고 import로 이미지를 가져와서 사용한다.

 

- commit으로 이미지를 생성하고, 생성한 이미지들을 tar 파일로 압축해서 docker에서 load를 이용하여 이미지를 다운 받아올 수 있다.


2. Commit

 

- 도커 컨테이너 상에서 작업한 내용을 Image로 Commit하여 나중에 해당 이미지로부터 다시 컨테이너를 실행함으로서 작업했던 내용을 다시 사용할 수 있다.

 

컨테이서 생성
해당 컨테이너 commit

- httpd 이미지를 통한 컨테이너를 생성한 다음 해당 컨테이너를 commit을 통해 새로운 이미지를 생성한다.

 

commit을 통한 이미지 생성

- commit을 통한 h1 컨테이너에 적용된 이미지와 동일한 이미지가 생성된 것을 확인 할 수 있다.

 

- commit을 통해 생성한 이미지로 새롭게 컨테이너를 생성하여 사용할 수 있다.


3. tar, load

- commit을 이용한 이미지 생성이나 이미 존재하는 이미지들을 tar를 이용하여 하나의 파일로 생성하여 load를 통해 여러 이미지들을 한번에 생성할 수도 있다.

 

 

- alpine 이미지와 centos:7 이미지를 image.tar 파일로 압축한다.

- docker를 통해 압축한 파일이기 때문에 docker load 명령어를 통해 해당 압축 파일을 풀어줘야 한다.

- docker load를 통해 해당 압축 파일을 해제하게 되면 압축 파일에 있던 여러 이미지가 생성되는 것을 확인 할 수 있다.


4. export, import

 

- 위에서 봤던 commit, tar로 압축 후 load하는 방식처럼 export, import를 통해 Image를 생성하는 방법도 있다.

 

- export를 통해 컨테이너를 압축하여 내보낸다.

- import를 통해 export된 파일을 가져와 이미지를 생성한다.

- 단 export, import를 통해 생성된 이미지는 기본 설정이 전부 초기화 되기 때문에 초기 설정을 전부 해줘야한다.

 

- c1 컨테이너 생성 후 export를 통해 test.tar 파일로 내보낸다.

- docker export 명령어는 현재 docker container 내부의 디렉토리 전체를 압축하여 새로운 이미지로 생성해 준다고 볼 수 있다.

- import를 통해 test.tar 파일로부터 이미지를 생성한다.

 

- import를 통해 이미지를 생성하고, 생성된 이미지를 통해 컨테이너를 실행시키게 되면 설정이 전부 초기화 되기 때문에 실행이 되지 않는다.

 

- 이를 정상적으로 기동하기 위해서는 import 이미지를 기반으로 새롭게 Dockerfile을 작성하거나, import 시점에 명령어를 주입시켜 주어야 한다.

- 컨테이너를 실행 시키기 위해 import 시점에 CMD를 통해 명령어를 주입 시켜 준다.

 

- 위와 같이 import 시점에 명령어를 실행시켜주자 이미지 생성 및 컨테이너가 정상적으로 생성되고 작동되는 것을 볼 수 있다.

- 즉, import 초기화 것들을 다시 살려줘야 한다.


* 추가 정보

 

- fore ground라는 명령어를 사용하기

 

- 환경 변수를 지정해주지 않으면 절대 경로를 지정해주지 않는 이상 어디서 실행해야 하는지 알지 못한다.

 

컨테이너 실행
export를 통해 컨테이너를 내부 디렉토리를 압축
import를 통한 이미지 생성 및 import 시점에 명령어 주입

- import로 이미지를 생성하게 되면 설정 파일이 전부 초기화 되기 때문에 forground의 실행 명령어의 위치를 알 수 없어 그냥 실행 시키게 되면 실행이 되지 않는 것을 볼 수 있다.

 

- 때문에 해당 명령어를 실행 시키기 위해 환경 변수에 해당 명령어의 경로를 미리 지정해주면서 실행 시켜주게되면 정상적으로 컨테이너 생성 및 프로세스가 동작하는 것을 볼 수 있다.

 

- 정상적으로 컨테이너가 실행되어 Web Server도 정상적으로 작동하는 것을 볼 수 있다.

 

- 해당 컨테이너 정보를 확인하게 되면 PATH 경로가 지정되어 있는 것을 볼 수 있다.

 

- export import 설정파일이 초기화 된다는 것을 잊지말자!


- commit 하면 이미지로 만들어지고 바로 사용하면 된다.

 

-  save 명령어를 이용해서 이미지 파일을 압축 파일  압축한 다음( tar 압축해서)  docker load 하면 된다. (이게 가장 편한 방법이다.)

728x90

'개발 > Docker' 카테고리의 다른 글

Docker - PHP, MYSql 설치 및 실행  (0) 2022.06.01
Docker - Link ( + Scripts)  (0) 2022.06.01
Docker - Scripts  (0) 2022.05.31
Docker - HAProxy, Network, Port Forwarding  (0) 2022.05.30
Docker - Network  (0) 2022.05.30