티스토리 뷰

설치가 완료된 Docker를 start 하고 여기서 개발한 어플리케이션을 올려보기로 했다. 올릴 어플리케이션은 nodejs로 개발된 것으로 Host에 파일이 저장돼 있는 상태다.

Docker 명령어 중에 exec라는 명령어가 있는데 컨테이너에 attach로 접속하지 않고 외부에서 명령어를 실행해 볼 수 있다. 예를 들어 외부헤서 컨테이너안의 특정 폴더 목록을 보고싶을 경우 아래와 같이 실행하면 hello라는 컨테이너의 /bin 하위 폴더 목록을 볼 수 있다.

docker exec hello ls /bin

새로운 어플리케이션을 설치하기 위해 app폴더를 하나 생성했다.
docker exec hello mkdir /app

그리고 cp를 통해서 파일을 카피하려고 했다.(https://docs.docker.com/engine/reference/commandline/cp/#extended-description)
docker cp ./hellobook.tar hello:/app

하지만 계속 실행하면 FATA[0000] Error: Path not specified 에러가 발생을 해서 찾아보니 Host에서 컨테이너로 파일을 복사하기 위해서는 docker version이 1.8 이상이어야 했다.
(https://docs.docker.com/cs-engine/1.12/upgrade/#suse-enterprise-123)

업그레이드가 완료되면 이제 파일이 복사된다.
docker cp ./hellobook.tar hello:/app

그럼이제 컨테이너로 접속하여 압축을 풀면된다.
docker attach hello
cd /app
tar -xvf hellobook.tar hellobook

nodejs로 개발된 어플리 케이션이기 때문에 docker에 노드를 설치해야 해서 apt-get을 update 하고 curl을 설치했다. 그리고 node를 설치한다.

apt-get update
apt-get install curl
curl -sL https://deb.nodesource.com/setup_6.x | bash -
apt-get install -y nodejs

이제 어플리케이션을 실행한다. 하지만 여기서 실행시킨 어플리케이션이 실행이 돼도 host에서 포트가 LISTEN되지 않는 것을 볼 수 있었다...ㅠㅠ 처음 컨테이너 기동시 포트설정을 추가해줬야 했던 것... 그래서 현재 기동중인 컨테이너에 포트를 추가했다.

먼저 현재 기동 중인 컨테이너를 중지한다.
docker stop hello

그리고 현재 컨테이너를 image로 만든다.
docker commit hello ubuntu_hellobook

포트 설정을 해서 새로운 image를 컨테이너로 기동한다.
docker run -i -p 3001:3001 -t --name new_hello ubuntu_hellobook /bin/bash

새로운 컨테이너가 포트를 점유해서 올라간 것을 볼 수 있고 3001번이 LISTEN상태인 것을 확인할 수 있다.

ubuntu@ip-172-31-28-148:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS                    NAMES

0623405baafb        ubuntu_hellobook              "/bin/bash"         53 seconds ago      Up 51 seconds              0.0.0.0:3001->3001/tcp   new_hello

e96a0d2a19bf        ubuntu              "/bin/bash"         3 hours ago         Exited (0) 2 seconds ago                            hello

그리고 새로 생성된 컨테이너의 /app/hellobook 어플리케이션을 기동하면 외부에서 서비스에 접속할 수 있다.

'IT > 기타' 카테고리의 다른 글

bitbucket pipelines 사용하기  (0) 2018.12.28
PostgreSQL Partitioning  (0) 2018.09.12
Docker 설치  (0) 2017.03.16
Redis redis.conf  (0) 2017.02.24
log 파일에서 키값 추출 및 중복 검사  (0) 2017.01.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함