Docker (Python코드로 로또 만들기/ node.js스크립트 작성 / hub.docker.com에서 사용자가 생성한 이미지를 업로드 수행/ 사용자 프로젝트에 맞는 이미지 개발/)

2021. 5. 28. 19:24·자격증/AWS Certified Solutions Architect
728x90
반응형

컨테이너 삭제하는 이유는?

 

Docker rm 컨테이너 ID

             ㄴ 삭제하는 이유는? Image는 복사본 + Process  = container

                                             ㄴ OS공간을 사용 중

 

Docker에서 Python코드로 로또만들기

 

vi py_lotto.py

from random import shuffle
from time import sleep
gamenum = input('로또 게임 회수를 입력하세요: ')
for i in range(int(gamenum)):
   balls = [x+1 for x in range(45)]
   ret = []
   for j in range(6):
      shuffle(balls)			# balls를 무작위로 섞고,
      number = balls.pop()		# balls의 제일 마지막 숫자를 추출하고, 제거
      ret.append(number)		# 추출된 숫자를 ret에 추가
   ret.sort()
   print('로또번호[%d]: ' %(i+1), end='')
   print(ret)
   sleep(1)

 

docker run -itd --name=py_lotto python:3.9-slim  #백그라운드 Python 실행

 

docker cp py_lotto.py py_lotto:/py_lotto.py #우분투에서 만드 vi 도커로 복사

 

docker exec -it py_lotto bash #실행

 

python py_lotto.py #파이썬 코드 실행

 


Docker에서 node.js 돌리기

간단한 nodejs 스크립트 작성.

vi nodejs_test.js

var http = require('http');

var content = function(req, resp){

 resp.end("Good morning Korea ~! -TAE SUNG-" +"\n");

 resp.writeHead(200);

}

var  web = http.createServer(content);

web.listen(8000);

 

docker pull node:15-slim  # 도커에서 node 이미지 다운로드

 

docker run -d -it -p 9000:8000 --name=nodejs_test node:15-slim # 백그라운드에서 노드 설치

 

docker ps # 도커에서 프로세스 확인

 

docker cp nodejs_test.js nodejs_test:nodejs_test.js #도커로 node코드 복사 

 

docker exec -it nodejs_test bash #도커에서 실행 

 

ls #디렉터리 확인

 

node nodejs_test.js #노드 실행

 

curl localhost:9000 # 확인

 

결과 확인


docker search node, docker search python 등 search하면 이미지들을 검색할 수 있다.

STARS는 좋아요 수 이다. 최대한 STARS가 많을 것은 받는게 안전하다.

 

우리가 받은 Docker image를 검사할 수 있다. 

docker image inspect 명령어로 이미지 내부를 검사할 수 있다.

 

docker inspect 도커 자체를 검사하는 것

 

EX) docker inspect cadvisor | grep MacAddress를 입력하면 cadvisor의 Mac주소를 알 수 있다.

 


hub.docker.com에서 사용자가 생성한 이미지를 업로드 수행하기

 

1) docker login

2) docker image tag 원본 이미지 : 태그 본인ID/저장소:태그(버전)

3) docker push

 

docker pull mariadb:10.4 # 이미지 다운로드 mariadb

 

docker image tag mariadb:10.4 ku900052/mydb:maria104 #태그를 통해 저장소에 이미 넣기

 

docker push ku900052/mydb:maria104 #업로드

 

docker images #확인 

 

hub.docker.com 내아이디 저장소에 올라와 있는 모습을 확인 할 수 있다.


 

이어지는 실습

1번

docker pull mysql:5.7

docker tag mysql:5.7 본인ID/mydb:my5.7

docker images

docker login

docker push 본인ID/mydb:my5.7

 

2번 

docker pull mysql:8.0

docker tag mysql:8.0 ku900052/mydb:my8.0

docker push ku900052/mydb:my8.0

 

위와 같이 확인할 수 있다.


사용자가 프로젝트에 맞는 이미지 개발(작은 것)

Dockerfile → bulid → tag → push 순으로 진행한다.

 

mkdir nginx

cd nginx/

~nginx/$ vi Dockerfile #베이스 이미지 생성

 

FROM nginx:1.19

COPY index.html /usr/share/nginx/html/index.html

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

 

~nginx/$ ls -l  # 확인

 

~nginx/$ vi index.html #index.html 생성

<html>  <head>   

<title>Amazon EC2 base docker  Application</title>    
<style>body {margin-top: 40px; background-color: #333;} </style> 
</head>  
<body>   
<div style=color:white;text-align:center>  
<h1> Complete! </h1>    
<h2> TS K.. </h2>     
<p>Application is now good running on Docker nginx  web.</p>   
</div>  </body> </html>

 

 

~nginx/$  docker build -t my-nginx-image:1.0 .   # . ←마침표 주의!!  빌드를 해주는 것이다.

~nginx/$  docker images #이미지가 잘 있는지 확인한다.

~nginx/$  docker run --name webserver2 -d -p 8002:80 my-nginx-image:1.0 #웹 서버 실행

#컨테이너 실패 시 → docker image rm my-nginx-image:1.0 로 삭제 후 다시 이미지 설치

 

~nginx/$ docker ps # 프로세스 확인 만약 존재한다면 계속 진행

~nginx/$ curl http://localhost:8002 #내 로컬호스트에서 index.html 실행이 잘 되는지 확인

~nginx/$ docker image tag my-nginx-image:1.0 ku900052/my_web:nginx119  # 내 저장소에 태그하기

~nginx/$ docker push ku900052/my_web:nginx119 # 내 저장소에 업로드

 

결과확인


 

사용자 큰 이미지 만들어보기 

노드를 사용하여 제작

 

node.js 소스코드 

 

디렉터리 단위로 제작해야한다.

vi app.js

const http = require('http');
const os = require('os');

console.log("NPM node server starting...");
var handler = function(request, response){
        console.log("Received request from " + request.connection.remoteAddress);
        response.writeHead(200);
        response.end("You 've hit" + os.hostname()+"\n");
};

var www = http.createServer(handler);
www.listen(9090);

 

vi Dockerfile

FROM node:15-slim
ADD app.js /app.js
ENTRYPOINT ["node", "/app.js"]

 

#FROM 으로 BASE 이미지 로드

#ADD 명령어로 이미지에 app.js 파일 추가 

# ENTRYPOINT 명령어로 node를 실행하고 매개변수로 app.js를 전달

 

docker build -t nodejs:1.0 .

 

#test

docker run -itd -p 9090:9090 nodejs:1.0

docker ps

 

#upload

docker login

docker image tag nodejs:1.0 본인ID/nodejs:1.0 # 태그

docker images #이미지가 잘 있는지 확인한다.

docker push ku900052/nodejs:1.0 #push

curl localhost:9090 #확인


 

 


ubuntu@ip-172-31-35-54:~/LABs$ cd webapp/
ubuntu@ip-172-31-35-54:~/LABs/webapp$ cd ..
ubuntu@ip-172-31-35-54:~/LABs$ git clone https://github.com/brayanlee/webapp.git 

 

brayanlee/webapp

Contribute to brayanlee/webapp development by creating an account on GitHub.

github.com


ubuntu@ip-172-31-35-54:~/LABs/webapp$ ls -al
total 68
drwxrwxr-x 3 ubuntu ubuntu  4096 May 28 12:25 .
drwxrwxr-x 3 ubuntu ubuntu  4096 May 28 12:24 ..
drwxrwxr-x 8 ubuntu ubuntu  4096 May 28 12:25 .git
-rw-rw-r-- 1 ubuntu ubuntu 55682 May 28 12:25 webapp.tar.gz

 

/LABs/website$ vi Dockerfile_web

FROM ubuntu:14.04
MAINTAINER "TS <k-t@boanin.com>"
LABEL "purpose"="webserver practice"
RUN apt-get update && apt-get -y install apache2 \
                                         vim \
                                         curl

ADD webapp.tar.gz /var/www/html
WORKDIR /var/www/html
EXPOSE 80
CMD /usr/sbin/apachectl -D FOREGROUND

# ADD는 tar.gz의 압축을 풀어주는 용도도 있다.


 

docker build -f Dockerfile_web -t myhttp:2.0 . #빌드 

docker run -d -p 8181:80 --name myapacheserver2 myhttp:2.0 #실행

 

/LABs/webapp$ docker exec -it myapacheserver2 bash #도커에서 실행
root@616fd6380d8c:/var/www/html# ls             #도커접속한 모습

css  index.html  pngs

 

docker login #hub.docker.com에 로그인 하는 것

docker image tag nodejs:1.0 ku900052/myhttp:2.0 #이미지 태그

docker push ku900052/myhttp:2.0 #이미지 푸쉬(upload)

 

결과확인

728x90
반응형

'자격증 > AWS Certified Solutions Architect' 카테고리의 다른 글

AWS - SAA 합격 후기 및 DUMP 공유  (24) 2024.09.02
SAA - CO2 : EC2 & EBS & EFS  (0) 2021.08.04
Docker(node.js를 활용한 runserver구성/ Flask 활용 / 컨테이너를 활용한 로드밸런스(net-alias를 활용하여)/ Nginx를 활용한 로드밸런스/docker-compose를 활용한 wordpress)  (0) 2021.06.01
도커(Docker) 란?(설치 및 실습/도커에서 ubuntu설치,도커에서MySQL설치/도커에서 모니터 설치, 도커에서 MySQL워크벤치 설정/ 도커에서 Python서버 실행,도커에서 nginx(webserver))  (0) 2021.05.27
'자격증/AWS Certified Solutions Architect' 카테고리의 다른 글
  • AWS - SAA 합격 후기 및 DUMP 공유
  • SAA - CO2 : EC2 & EBS & EFS
  • Docker(node.js를 활용한 runserver구성/ Flask 활용 / 컨테이너를 활용한 로드밸런스(net-alias를 활용하여)/ Nginx를 활용한 로드밸런스/docker-compose를 활용한 wordpress)
  • 도커(Docker) 란?(설치 및 실습/도커에서 ubuntu설치,도커에서MySQL설치/도커에서 모니터 설치, 도커에서 MySQL워크벤치 설정/ 도커에서 Python서버 실행,도커에서 nginx(webserver))
Royal!
Royal!
Bachelor of Arts. Bachelor of Science in Engineering. Master of Science in Engineering (In Progress). Job Title: Infrastructure & Security & Cloud Engineer. Etc: Mentor at Fourth Industrial Revolution Center.
  • Royal!
    Security
    Royal!
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 운영체제
      • 네트워크
      • 클라우드
      • 서버
      • Container
      • 프로그래밍
        • Python_혼자 끄적끄적
        • Python_AI(영상처리)
        • 빅데이터
        • C_정보올림피아드 Language_Coder
        • C_QnA
      • 자격증
        • 정보보안기사
        • 정보처리기사
        • ADsP
        • CPPG
        • 보안법률
        • NCA~NCP
        • AWS Certified Solutions Arc..
      • 리버싱
        • 리버싱 걸음마
      • Wargame & CTF
        • Hackerschool FTZ
      • 기타 교육
        • KISA 정보보호제품실습군
        • 빅데이터_분석실무
        • 시큐어코딩진단전문교육(호남정보보호센터)
        • SW테스트 전문가 과정(ISTQB CTFL자격)
        • 정보보호 컨설팅 전문가 양성과정
      • 기타
        • 면접일지
        • 기타
        • 인턴활동
        • 논문 요약
      • K-Shield Jr
        • 악성코드분석
        • 침해사고분석
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    nce dump
    switch forwarding mode
    스위치 프레임 포워딩 방식
    304 code
    restful api 개념
    rest api 문법
    euid란
    nce덤프
    네이버클라우드 ftp 설정
    euid가 중요한 이유
    uid란
    kernel 사용자 모드
    kernel 구성요소
    304코드
    rest api 정리
    rest api 아키텍처
    getuid()
    fragment-free
    redirect 304
    geteuid()
    rest api 논문
    swtich frame
    상태코드 304
    rest api 제약조건
    geteuid
    getuid
    l2 스위치 프레임 전달 방식
    kernel모드
    rest api 공부
    스위치 프레임 동작 방식
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Royal!
Docker (Python코드로 로또 만들기/ node.js스크립트 작성 / hub.docker.com에서 사용자가 생성한 이미지를 업로드 수행/ 사용자 프로젝트에 맞는 이미지 개발/)
상단으로

티스토리툴바