devnoong.log
article thumbnail
728x90

컨테이너 이미지란?

컨테이너 실행에 필요한 파일과 설정 값 등을 묶어 놓은 것입니다.

이런 이미지는 저장소에 올리고 받을 수 있습니다. 그 이미지를 실행한 상태가 컨테이너라고 할 수 있습니다.

 

공식 이미지 저장소에서 다운 받아 사용할 수도 있고, 직접 만들 수도 있습니다.

1. Dockerfile 파일 만들기

 

컨테이너 이미지를 만들기 위한 설정 파일인 Dockerfile을 생성합니다.

이미지가 컨테이너가 되면 실질적으로 application이 구동되는 것입니다.

 

파일을 등록하기위해 환경 설정 위치로 이동하겠습니다.

cd ~/environment/

 

VI명령어를 이용해 Dockerfile을 생성했습니다.

 

vi Dockerfile
FROM nginx:latest
RUN  echo '<h1> test nginx web page </h1>'  >> index.html
RUN cp /index.html /usr/share/nginx/html

Docker File에서 각각이 의미하는 바는 아래와 같습니다.

 

FROM : Base Image 지정(OS 및 버전 명시, Base Image에서 시작해서 커스텀 이미지를 추가)
RUN : shell command를 해당 docker image에 실행시킬 때 사용함

 

2. Docker 이미지 만들기

 

docker build 명령어로 test-image의 이름을 가진 이미지를  만듭니다.

tag의 경우, 따로 작성하지 않으면 latest라는 값을 가지게 됩니다.

 

docker build -t test-image . 

 

 

docker images 명령어로 생성된 이미지를 확인합니다.

docker images

 

3. Docker 이미지 실행하기

docker run 명령어로 이미지를 컨테이너로 실행시킵니다.

 

test-image라는 컨테이너 이미지를 사용하여 test-nginx라는 이름의 컨테이너를 실행하는데,

호스트 8080 포트와 컨테이너의 80 포트가 맵핑된다는 의미입니다.

docker run -p 8080:80 --name test-nginx test-image

 

4. 실행 Docker 확인하기

● 프로세스 

ps 명령어를 통해 현재의 호스트에서 실행 중인 컨테이너를 확인할 수 있습니다.

docker ps

● 로그

실시간 로그를 보고 싶을 경우에는  logs 명령어를 통해 확인합니다.

docker logs -f test-nginx

 

● Preview

실시간으로 적용 되어 있는 모습을 보고싶을 경우에는 

Tools -> Preview -> Preview Running Application 버튼을 클릭해주세요!

 

그럼 적용 되어 있는 모습을 확인 할 수 있습니다 :)

● EXEC

이제는 도커 컨테이너의 내부 안으로 들어가보도록 하겠습니다.

각각의 컨테이너는 호스트 시스템과는 별개의 파일 시스템, 네트워크, 권한 등 다른 환경을 가지고 있습니다.

 

특정한 컨테이너가 실행되는 환경에서 또 다른 프로세스를 실행할 수 있도록 해주는 명령어가 바로 docker exec입니다.

 

주의할점은 컨테이너가 실행중일 때만 exec를 사용할 수 있다는 점입니다. 

 

예를 들어서 컨테이너의 리스트 목록을 보고 싶다면  docker exec <CONTAINER_ID> <COMMAND> 의 형식으로 아래와 같이 작성하면 됩니다.

아래의 명령어는 직접 내부에 직접 들어가지 않고 명령어를 보내는 방법입니다.

 

docker exec  test-nginx ls

그 외에 내부에 직접 들어가서 쉘을 이용하여 명령어를 입력하는 방식이 존재합니다.

- it 옵션을 추가해주면 됩니다.

 

-i :  표준입출력 STDIN를 열겠다는 의미

-t : 가상 tty(pesudo tty)를 통해 접속하겠다는 의미 입니다.

 

뒤에는 셀 경로를 나타냅니다.

docker exec -it  test-nginx bin/bash

이런식으로 쉘을 이용하여 접속해서 필요한 명령어를 입력하면 됩니다.

 

vi명령어를 이용하여 기존에 있는 index.html 파일을 수정하려고 하니 아래와 같이 나오네요.

컨테이너에 vi를 설치해야 되는 것 같습니다.

 

apt-get update
apt-get install vim

설치 후 다시 vi 명령어를 입력하여 수정하였습니다.

 

 

쉘을 빠져나오고 싶으면 exit 명령어를 입력해서 빠져나오면 됩니다.

 

근데 Previw 화면에는 적용이 안되네요 ㅎ

 

그래서 컨테이너 중지후 재시작하면 적용 될줄 알고!!!!

 

docker stop test-nginx
docker restart test-nginx

 

실행 후 확인해 봤지만 Preview 화면에는 그대로입니다 ㅠㅠ

아직 알아가야하는게 많네요...^^;;

이렇게 테스트 이미지 컨테이너로 이것저것 시도 해봤으니 이제 컨테이너를 중지후 삭제를 수행해보도록 하겠습니다.

● STOP & REMOVE

중요한것은 컨테이너가 중지상태이어야 삭제 rm 명령어를 수행 가능하니 주의해주세요! :)

docker stop test-nginx
docker rm test-nginx

 

컨테이너 삭제 후 이제 남아 있는 이미지까지 삭제하면 기존에 만들었던 내역은 모두 삭제됩니다.

docker rmi test-image

test-image가 삭제된것을 확인 해보실 수 있습니다.

 

728x90