티스토리 뷰

[업데이트 2019.02.14 17:09]


먼저 Dockerfile이 위치한 디렉토리로 이동합니다.

만약 Docker Hub에 이미지를 올릴려면, 계정 생성 및 저장소를 생성해야합니다.

(https://hub.docker.com)


Docker 이미지 이름의 컨벤션은 아래와 같습니다.

<username>/<repository>:<tagname>

 
ex) aibakevision/web-ui:0.0.1


1. 컨테이너 빌드

빌드시 빌드 이미지 이름을 파라메터 -t와 함께 넘겨주며, 빌드 디렉토리로 . 를 줍니다. 

현재 디렉토리를 기준으로 빌드를 수행합니다.

docker build -t aibakevision/web-ui:0.0.1 .
ubuntu@server:~/projects/crested-gecko/web-ui$ docker build -t aibakevision/web-ui:0.0.1 .
Sending build context to Docker daemon   9.93MB
Step 1/7 : FROM python:3.7.2-stretch
 ---> 7c5fd2af3815
Step 2/7 : RUN mkdir /webapp
 ---> Using cache
 ---> a60d96c967f5
Step 3/7 : ADD entrypoint.sh /webapp
 ---> Using cache
 ---> 5cd78b6feeac
Step 4/7 : ADD ./src /webapp
 ---> Using cache
 ---> 712e7ba92dbc
Step 5/7 : WORKDIR /webapp
 ---> Using cache
 ---> afe58ede3819
Step 6/7 : RUN pip install --upgrade --no-cache-dir pip && pip install --no-cache-dir -r requirements.txt
 ---> Using cache
 ---> ac0d5e275f54
Step 7/7 : ENTRYPOINT ["/bin/bash", "entrypoint.sh"]
 ---> Using cache
 ---> b45f1d7e1530
Successfully built b45f1d7e1530
Successfully tagged aibakevision/web-ui:0.0.1
ubuntu@server:~/projects/crested-gecko/web-ui$ 


2. 컨테이너 실행

Docker 이미지 실행시 역시 이미지 이름을 넘겨주며, -p의 옵션을 통해 port forwarding을 수행 할 수 있습니다.

ex) -p 80:5000, 80포트로 접근시 내부적으로 5000포트로 리다이렉션.


또한 background로 수행할 지 foreground로 수행할지 -d, -it 옵션으로 지정할 수 있습니다.


-d: background

-it: foreground

docker run -p 80:5000 -d aibakevision/web-ui:0.0.1


- Foreground 실행
ubuntu@server:~/projects/crested-gecko/web-ui$ docker run -p 80:5000 -it aibakevision/web-ui:0.0.1
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
INFO:werkzeug: * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)


- Background 실행
ubuntu@server:~/projects/crested-gecko/web-ui$ docker run -p 80:5000 -d aibakevision/web-ui:0.0.1
f3892a9ae045d1230381fbf283ace47cc76472f7057afca38557fd57016be6de
ubuntu@server:~/projects/crested-gecko/web-ui$ 


3. 컨테이너 Docker Hub 업로드

docker push aibakevision/web-ui:0.0.1
ubuntu@server:~/projects/crested-gecko/web-ui$ docker push aibakevision/web-ui:0.0.1
The push refers to repository [docker.io/aibakevision/web-ui]
35a4581a95aa: Pushed 
07f6416db4fa: Layer already exists 
1083ea0a4e2c: Layer already exists 
6400bf0ab6ad: Layer already exists 
45b4a7ebd721: Layer already exists 
bf37704a7eab: Layer already exists 
a70b9475716b: Layer already exists 
889326ab9a3b: Layer already exists 
1a36262221c3: Layer already exists 
d2217ead3a1c: Layer already exists 
b53b57a50746: Layer already exists 
d2518892581f: Layer already exists 
c581f4ede92d: Layer already exists 
0.0.1: digest: sha256:12453319e5b7882f0b7da22251e67e23d74f65d51036bb9b6207ee164eeb01f4 size: 3054
ubuntu@server:~/projects/crested-gecko/web-ui$ 


4. 컨테이너 상태 확인

ps 명령어를 통해 현재 실행중인 Docker 컨테이너를 상태를 확인 할 수 있습니다.

docker ps
ubuntu@server:~/projects/crested-gecko/web-ui$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                  NAMES
d59a17faed43        aibakevision/web-ui:0.0.1   "/bin/bash entrypoin…"   6 hours ago         Up 6 hours          0.0.0.0:80->5000/tcp   quizzical_ardinghelli
ubuntu@server:~/projects/crested-gecko/web-ui$ 


5. 컨테이너 종료하기

현재 실행중인 Docker 컨테이너를 종료 할 수 있습니다. Docker ps 명령어를 통해 컨테이너 ID를 확인후 종료합니다.

docker stop f3892a9ae045
ubuntu@server:~/projects/crested-gecko/web-ui$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                  NAMES
f3892a9ae045        aibakevision/web-ui:0.0.1   "/bin/bash entrypoin…"   12 minutes ago      Up 12 minutes       0.0.0.0:80->5000/tcp   sharp_lovelace
ubuntu@server:~/projects/crested-gecko/web-ui$ docker stop f3892a9ae045
f3892a9ae045
ubuntu@server:~/projects/crested-gecko/web-ui$ 


6. 컨테이너 로그 확인

Background로 컨테이너를 수행한 경우 로그 확인을 할 수 없는데, logs 명령어를 통해 현재 실행중인 Docker 컨테이너 로그를 확인 할 수 있습니다.

docker logs f3892a9ae045
ubuntu@server:~/projects/crested-gecko/web-ui$ docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                  NAMES
f3892a9ae045        aibakevision/web-ui:0.0.1   "/bin/bash entrypoin…"   20 seconds ago      Up 19 seconds       0.0.0.0:80->5000/tcp   boring_ride
ubuntu@server:~/projects/crested-gecko/web-ui$ docker logs f3892a9ae045
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
INFO:werkzeug: * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
ubuntu@server:~/projects/crested-gecko/web-ui$ 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   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
글 보관함