Docker - 처음 Docker 접할때 오는 멘붕 몇가지
2021. 1. 18. 15:58
🚦 Server/Docker
Docker는 Virtual machine이 아니다! 처음 docker를 실행할 때 다음과 같은 명령을 실행하면 우분투 서버가 실행된다고 생각했다. 즉, Virtual machine과 같이 컨테이너 내에 우분투 서버가 실행되는 줄 알았다. $ docker run --name ubuntu_test ubuntu 위 명령을 실행하면 그냥 아무것도 실행하지 않은 것처럼 아무런 변화가 없다. 다만 다음과 같이 실행되지 않는 docker container를 보는 옵션(-a)을 주고 docker container의 목록을 보면 종료(Exit)되었다고 나타나기는 한다. $ docker ps -a d8f31b2635d9 ubuntu "/bin/bash" 19 seconds ago Exited (0) 17 seconds ..
Docker - tutorial
2021. 1. 18. 15:44
🚦 Server/Docker
docker run ubuntu:16.04 run명령어를 사용하면 사용할 이미지가 저장되어 있는지 확인하고 없다면 다운로드(pull)를 한 후 컨테이너를 생성(create)하고 시작(start) 합니다. 위 예제는 ubuntu:16.04 이미지를 다운받은 적이 없기 때문에 이미지를 다운로드 한 후 컨테이너가 실행되었습니다. 컨테이너는 정상적으로 실행됐지만 뭘 하라고 명령어를 전달하지 않았기 때문에 컨테이너는 생성되자마자 종료됩니다. 컨테이너는 프로세스이기 때문에 실행중인 프로세스가 없으면 컨테이너는 종료됩니다. 이번에는 /bin/bash 명령어를 입력해서 ubuntu:16.04 컨테이너를 실행해 보겠습니다. 컨테이너 내부에 들어가기 위해 bash 쉘을 실행하고 키보드 입력을 위해 -it 옵션을 줍니다. ..
Docker - Dockerhub에 image 올리기
2021. 1. 13. 17:54
🚦 Server/Docker
Dockerhub에 image 올리기 ➜ ~ docker run -it --name MyNginx ubuntu:latest repository 업데이트 하기 root@15164209bbdf:/# apt-get update nginx를 설치해보자 root@15164209bbdf:/# apt-get install nginx nginx가 설치된 것을 확인할 수 있다. $ root@15164209bbdf:/# which nginx >> /usr/sbin/nginx curl command 설치하기 root@15164209bbdf:/# apt-get install curl nginx landing page를 확인할 수 있다. root@15164209bbdf:/# service nginx start * Startin..
Docker - container 제거하기
2021. 1. 13. 16:43
🚦 Server/Docker
컨테이너 상대로 명령어 실행 실행 중인 컨테이너 상대로 명령어를 날리고 싶다면 docker exec 커맨드를 사용합니다. 예를 들어, 어떤 컨테이너를 상대로 ls 커맨드를 실행하고 싶다면 다음과 같이 하면 됩니다. -it 옵션을 사용하면 해당 컨테이너의 쉘(shell)과 작접 상호작용하면서 연속으로 명령어를 실행할 수 있습니다. -it 옵션 -i 옵션과 -t 옵션은 같이 쓰이는 경우가 매우 많은데요. 이 두 옵션은 컨테이너를 종료하지 않은체로, 터미널의 입력을 계속해서 컨테이너로 전달하기 위해서 사용합니다. 따라서, -it 옵션은 특히 컨테이너의 쉘(shell)이나 CLI 도구를 사용할 때 매우 유용하게 사용됩니다. 컨테이너 제거 컨테이너를 제거하고 싶을 때는 docker rm 커맨드를 사용합니다. 중지..
Docker 로 python 실행하기
2021. 1. 8. 15:34
🚦 Server/Docker
docker-compose.yml 예제 version: '3' services: api: image: python:latest volumes: - ${proj_path}:/root/flask_api_demo working_dir: /root/flask_api_demo version : docker-compose.yml version을 정의합니다. yml 형식의 문법을 정의 합니다. services : docker container를 정의하는 부분입니다. 하나의 container를 하나의 service로 볼 수 있습니다. api : service 이름입니다. 예제에서는 api라는 이름의 service로 container를 구동하겠습니다. 임의로 service이름을 설정할 수 있습니다. image : doc..
Docker - image가 저장되는 방식
2021. 1. 8. 12:44
🚦 Server/Docker
Container 는 뜻 그대로 화물 수송용 박스를 생각하면 됩니다. container에 다양한 화물을 넣고 다양한 운송수단에 적재되어 쉽게 옮길 수 있는데 서버에서도 마찬가지입니다. 서버 실행에 필요한 모든 것(코드, 런타임, 시스템도구)들을 container에 넣어 쉽게 추상화하고 어디서에든(GCP, AWS, Local-machine) 실행할 수 있습니다. Docker image는 container의 모든 정보를 포함한 하나의 단위로 볼 수 있습니다. Docker 를 사용하는 이유는 container를 활용하여 쉽게 개발환경과 운영환경을 동일하게 구성할 수 있기 때문입니다. Docker container를 동시에 여러개를 생성하여 구동하려면 어떻게 해야 할까요? 하나씩 docker run 명령어를 치..
Docker - 라이프 사이클, 명령어
2021. 1. 7. 12:16
🚦 Server/Docker
Docker : Managing Containers Application 시작하기 docker run -d -p 80:80 docker/getting-started pull pull 명령어를 통해서 이미지를 다운로드한다. 이때 다운 받아진 이미지는 실행이 불가능하다. pull된 이미지를 실행을 하기 위해서는 Container를 만들어야 한다. create create 명령어를 통해서 컨테이너를 만들 수 있다. 실행시킬려면 start로 실행할 수 있고 메모리에서 실행되게 된다. run run 명령어를 통해 pull, create, start 3가지를 모두 이용할 수 있다. 만약 pull이 되어있는 이미지라면 run 명령어를 이용했을 때 pull이 다시 되진 않는다. create, start만 된다. 이미지..
Docker - image, docker file, docker hub
2021. 1. 7. 11:24
🚦 Server/Docker
목차 Docker Image Docker File Docker Hub & Docker Registry Docker Architecture 컨테이너는 가상화 기술 중 하나로 대표적으로 LXC(Linux Container)가 있다. 기존 OS를 가상화 시키던 것과 달리 컨테이너는 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식으로 이루어진다. Docker Image Docker Image란 컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 것이라고 생각하면 된다. 그림과 같이 Image를 컨테이너에 담고 실행을 시킨다면 해당 프로세스가 동작하게 되는 것이다. 그럼 어떻게 이미지가 동작하는지 알기 위해선 어떻게 이미지가 만들어지는지 먼저 알아보도록 하자. 다음 그림을 보면 ubuntu 이미지..
Docker 설치 - Mac
2021. 1. 7. 10:54
🚦 Server/Docker
$ brew cask install docker 명령어로 설치하려면 오류가 날 것이다. brew cask 는 Homebrew 2.6.0에서 brew --cask를 선호하여 더 이상 사용되지 않는다. 이제 2.7.0이 출시되었기 때문에, brew cask 는 비활성화되었다. 그렇기 때문에 오류가 난다. home brew 유지 관리자들은 이 모듈과 아무런 관련이 없기 때문에, 이 문제를 해결할 수 있는 사람들에게 달려 있다. 비난 좀 받을만 하다... $ brew install --cask docker 이 명령어로 설치하시면 오류가 해결될 것이다. 이제 application에 docker가 있을 것이다. 이것을 한번 실행해줘야 /usr/local/bin에 도커 링크가 생기고 터미널에서 docker를 사용할 ..
Docker 란?
2021. 1. 6. 17:53
🚦 Server/Docker
Docker Docker는 Container를 만든다. 리눅스에서 논리적으로 나눌 수 있는 가상 인터페이스를 지원한다. Linux control 그룹을 사용해서 가상화 환경을 제공한다. cgroup docker가 윈도우에서 쓰일 때에는 hypervisor를 사용한다. 따라서 Docker는 윈도우즈보다 리눅스 환경에서 사용하는 것이 좋다. 가상화하여 자기만의 인터페이스를 가질 수 있다. VMware와 Docker의 성능의 차이 Docker를 사용했을 때 시간이 매우 절약 되는 것을 볼 수 있다. Container가 12개일 때 비교적 안정적인 모습을 보여주고 있다. 메모리의 사용량을 보면 메모리가 많이 남아있는 것을 확인할 수 있다. 모놀리식, 마이크로서비스 요즘에 나오는 규모있는 회사들은 메인 페이지의 ..
운영체제 요약 노트
2020. 12. 18. 20:22
🚦 Server/Operating System
개요 An operating system is a program acts as an intermediary between a (user/application) and ( hardware ) The operating system ( ) the system and ( ) applications. 대부분의 프로세서는 (general purpose processor ) 이다. 멀티 프로세서 시스템은 (parallel system) 이거나 (multicore system)이다. (폰노이만 아키텍쳐) : Stored-program computer model ( Asymmetric multiprocessing ) : Each processor is assigned a specific task. ( Symmetric ..
grep
2020. 7. 17. 11:35
🚦 Server/Linux
https://recipes4dev.tistory.com/157 리눅스 grep 명령어 사용법. (Linux grep command) - 리눅스 문자열 검색 1. grep 명령어. grep은 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어입니다. 리눅스에서 가장 많이 사용되는 명령어 중 하나이죠. 하지만 grep 명령어가 문자열을 � recipes4dev.tistory.com
24. File System
2020. 6. 24. 14:46
🚦 Server/Operating System
파일의 내부에는 Identifier가 있어서 그걸로 구분한다. 만들고 지우고 읽고 하는 기능이 있다. 파일을 분류를 해놓아야 한다. 디렉토리 : 파일이나 디렉토리를 묶어 놓는 개념 운영체제 입장에서의 디렉토리는 좀 다르다. 이름을 파일에 identifier라던지 크기라던지 파일에 접근한 시간이라던지 데이터의 모양 이라고 함 디렉토리는 운영체제 입장에서 데이터 모양(Metadata)으로 매핑 시켜주는 역할을 한다. attribute를 보여준다. attribute중 하나가 identifier 루트 디렉토리 안에는 파일이 있고 File ID는 0번이 된다 spell
23. Page Replacement
2020. 6. 24. 11:24
🚦 Server/Operating System
컴퓨터가 메모리보다 디스크에 접근하는게 수만배 느리다. Page replacement의 목적은 page fault를 최소화 하는 것이다. OPT OPT : 모든 상황에서 어떤 Page replacement policy보다 낫다. 가장 Page Fault가 낮다. 4번에서 Page fault가 발생한다. 누구를 뽑아낼 것이냐? 가장 나중에 참조될 것 같은 애를 뽑아낸다. 3이 가장 나중에 참조될 것 같으니 3을 뺀다. Hit Ratio는 5/12 이고 Page Fault Ratio는 7/12 이다. Page Fault Ratio는 낮을수록 좋은 것 그러나 Belady Algorithm은 미래에 누가 참조될지를 알 때 가능하다. 실제 system에 적용하긴 힘들고 수학적은 minimum이 언제인지를 알 때 ..
22. VM Features
2020. 6. 23. 15:07
🚦 Server/Operating System
file-backed page는 굳이 swap에다가 안 써도 된다. stack이나 heap은 백업이 없으니까 받아놔야 한다. Process의 address space의 segment에 따라서 demand paging에서 처리해야하는 방식과 적용해야하는 방식이 다르다. Equal allocation : 프로세스마다 공평하게 allocation 해줄것이다. Proportional allocation Priority allocation Global vs Local Page Replacement victim을 뽑을 때 Global Replacement : 전체 페이지 중 안쓰는 애 Local Replacement : 너가 안쓰는 것 중에서 가져다 써라 Thrashing Working set을 다 커버하지 못해서..
21. Demand Paging and VM Features
2020. 6. 21. 15:43
🚦 Server/Operating System
프로세스들이 메모리를 쓰고 있었을 때, 메모리를 추가적으로 쓰고싶다면? Swapping을 쓴다. 스와핑 (Swapping) : 페이지 하나씩 backing store로 내보내는 page out과는 달리, 프로세스 전체를 backing store로 내보낸다. - 즉, Page out으로도 메모리 부족을 해결하지 못할 경우 프로세스를 선택하여 전체를 backing store로 내보낸다. "swap out" Backing store에 swap out (빼놓고)한다. 프로레스 2기가 짜리 하나를 swap out 시키면 시간이 오래걸린다. Demand Paging Demand Paging : Page 단위로 swapping 하는 것 내가 필요한 내용만 부르고 나머지는 디스크로 빼논다. 필요할 때 쓴다. 메모리 덜..