일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C언어 포인터
- c# winform
- Python
- github
- 도커
- gitlab
- 깃
- c# 윈폼
- HTML
- Unity
- C++
- dart 언어
- c언어
- c#
- c# 추상 클래스
- docker
- git
- 포인터
- 다트 언어
- 플러터
- jupyter
- jupyter lab
- 유니티
- Algorithm
- C# delegate
- vim
- Houdini
- 구조체
- Flutter
- Data Structure
- Today
- Total
목록전체 글 (507)
nomad-programmer
Docker Machine의 기본 명령 docker-machine은 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux에서는 별로도 설치해야 한다. 2020/12/06 - [DevOps/Docker] - [Docker] 멀티호스트 환경에서 컨테이너 관리 다음의 명령을 실행하면 docker-machine의 버전 정보를 확인할 수 있다. $ docker-machine --version docker-machine 명령의 주요 서브 명령은 다음과 같다. 서브 명령 설명 create 실행 환경 작성 ls 실행 환경 목록 표시 status 실행 환경 상태 표시 url 실행 환경 URL 표시 ssh 실행 환경에 대한 SSH 연결 start 실행 환경 시작 stop 실행..
Django 서버와 DB 서버가 있다고 가정해보자. 이 서버들의 의존성은 다음과 같다. Django 서버는 DB 서버를 내부적으로 사용하기 때문에 DB 서버가 온전하게 구동된 후 Django 서버에서 DB서버를 사용해야 한다. 그런데 docker-compose 위의 서버 구성을 작성하여 실행하게되면 DB서버가 빨리 구동되면 문제가 없겠지만 DB서버가 구동되고 있는데 Django서버가 구동되면 문제가 발생한다. 그렇다고 DB서버를 먼저 실행한 후 온전히 구동되기를 기다렸다가 Django 서버를 구동시키는 수작업은 너무 귀찮을 일이다. 이것을 해결할 수 있는 방법이 있다. 그것은 아래의 스크립트를 이용하는 것이다. github.com/vishnubob/wait-for-it vishnubob/wait-for-..
버전 관리 서버를 private 하게 내부에서 관리할 필요가 있다는 판단하여 docker를 가지고 GitLab 서버를 구축하였다. 구축 과정을 블로그에 남긴다. DB서버를 사용하는 내부 서버가 있다. 그곳에다 GitLab서버를 구축하려고하였다. 그래서 다른것 하나 생각치않고 docker부터 떠올렸다. 이유는 해당 서버에 DB서버가 구축되어 있기 때문에 GitLab서버를 그대로 설치해버리면 기존에 사용하던 시스템이 망가질 우려가 있었기 때문이다. 따라서 기존의 시스템에 전혀 영향이 가지 않게끔 도커를 이용하여 GitLab 서버를 설치하였다. hub.docker.com/r/gitlab/gitlab-ce Docker Hub hub.docker.com GitLab 서버 설치 gitlab 서버 설치에 사용한 이미..
Docker에서 작동하는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션이 사양대로 올바르게 작동할 뿐만 아니라 서비스 이용자가 항상 이용할 수 있도록 운용 관리를 해야 한다. 이러한 컨테이너 기반은 보통 멀티호스트 환경으로 구축한다. 멀티호스트 환경에서 컨테이너 관리의 개요 웹 시스템의 실행 환경은 웹 서버, 프록시 서버, 데이터 스토어 등 역할이 다른 여러 개의 서버 기능이 연계되어 작동한다. 제품 환경에서 이용자에게 서비스를 제공할 때는 여러 개의 물리 서버나 여러 개의 가상 머신(VM)으로 구성된 멀티호스트 환경으로 서비스를 제공하는 것이 일반적이다. 멀티호스트 환경과 클러스터링 하나의 호스트 머신에서 Docker를 설치하고 그 위에서 몇 개의 컨테이너를 가동시켜 서버를 작동시켰다고 가정..
Docker Compose의 버전 확인 Docker Compose는 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux는 아래의 링크를 통해 설치할 수 있다. docs.docker.com/compose/install/ Install Docker Compose docs.docker.com // Docker Compose 버전 확인 $ docker-compose --version compose 정의 파일의 지정 현재 디렉토리 안에 docker-compose.yml 파일이 없는 상태에서 docker-compose up 명령을 실행하면 다음과 같은 에러를 확인할 수 있다. $ docker-compose up ERROR: Can't find a suitable co..
여러 컨테이너를 실행시킬 때 컨테이너마다 구성이나 시작/정지를 관리하자면 운용이 번잡해진다. 여러 컨테이너를 일괄적으로 관리할 수 있는 'Docker Compose' 의 구성 관리 파일인 'docker-compose.yml' 을 작성하는 방법에 대해 알아보자. docker-compose.yml 파일의 개요 docker-compose는 'docker-compose.yml' 이라는 Compose 정의 파일에 시스템 안에서 가동하는 여러 서버들의 구성을 모아서 정의한다. 이 정의 파일은 YAML 형식으로 기술한다. YAML YAML은 구조화된 데이터를 표현하기 위한 데이터 포맷이다. YAML은 Python과 같이 들여쓰기로 데이터의 계층 구조를 나타낸다. 들여쓰기는 탭이 아닌 스페이스를 사용한다. 누가 써도 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qr0NQ/btqO8XgQKlY/6woRksFykxK37D48DI6SYK/img.png)
Docker에서 움직이는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션 서버, 로그 서버, 프록시 서버 등과 같이 여러 개의 컨테이너들을 연계하여 작동시킨다. 여러 컨테이너 관리 웹 시스템의 실행 환경은 웹 서버, 프록시 서버 등과 같이 역할이 다른 여러 개의 서버를 연계하여 작동시키는 것이 일반적이다. 그래서 Docker에서 여러 개의 컨테이너를 연계시켜 운용 관리할 때 알아두어야 할 기초 지식에 대해 설명한다. 웹 3계층 시스템 아키텍처 애플리케이션을 가동시키려면 여러 개의 서버에 기능과 역할을 분할하여 인프라의 전체 구성을 정한다. 이것을 인프라 아키텍처라고 한다. 아키텍처는 우리말로 '설계 사상' 이라는 뜻이다. 대규모 웹 시스템의 경우 몇 개의 서브 시스템/기능으로 나누어 시스템을 개..
Docker 이미지는 인프라 구성 요소에서 래플리케이션의 개발 환경 및 실행 모듈도 포함하기 때문에 용량이 큰 것도 있다. 이런 이미지를 모두 개발용 클라이언트 PC나 온프레미스 환경에서 관리하려면 비용과 시간이 많이 든다. 퍼블릭 클라우드에는 Docker 이미지를 프라이빗으로 관리할 수 있는 매니지드 서비스가 제공되므로 이것을 이용하는 것이 좋다. Google Cloud Platform (GCP) 은 Docker 이미지를 프라이빗으로 관리할 수 있는 'Google Container Registry' 를 제공하고 있다. 이 서비스는 GCP의 오브젝트 스토리지 서비스인 'Google Cloud Storage' 를 데이터 저장 장소로 사용하고 있다. Google Container Registry 를 사용하여..
port 스캔 명령어 : nmap 사용할 수 있는 옵션 옵션 설명 -p 1-100 포트번호 1 ~ 100 까지 검색 -p- 포트번호 1 ~ 65537 까지 검색 -f 빠른 검색을 위해 100여개의 잘 알려진 포트번호 검색 (예: 21, 23, 25, 53) -sS TCP의 SYN 메시지 송신을 통한, 접속 허가 메시지(SYN/ACK) 수신 기법을 적용 (관리자 권한 필요) -sT TCP의 열린 포트번호 검색 -sU UDP의 열린 포트번호 검색 -A 운영체제 검색 (빠른 검색은 -O 옵션 사용) 패킷 모니터링 명령어 : tcpdump 이더넷 장치의 송수신 데이터를 모니터링한다. TCP, UDP, IP 등 이너넷을 통해 흘러가는 다양한 정보들을 출력한다. 이더넷이 더미허브(Dummy Hub)에 연결되어 있을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bv9M3n/btqOYusnZWv/u7Xr5rmj5kuaMpv9V6F5DK/img.png)
Docker 이미지에는 인터넷상에 공개하고 싶지 않은 정보가 포함되는 경우도 있다. 이럴 때 하나의 방법으로 Docker 이미지 관리를 위한 저장소를 로컬 환경에 구축할 수 있다. Docker 데이터 저장 경로 변경 (선택 사항) docker 로컬 저장소 주의할 점 private 도커 저장소에서는 Docker 이미지를 영구 데이터로 관리할 필요가 있다는 점이다. Docker에서는 호스트 머신에 볼륨을 공유함으로써 영구 데이터를 일원 관리할 수 있다. 하지만 이 데이터를 관리하려면 신뢰성이 높고 용량이 충분한 스토리지를 마련해야 한다. 또한 만일의 장애에 대비해 다중화 구성을 검토할 필요가 있으며, 정기적으로 데이터 백업이나 서버 감시 등과 같은 운용도 필요하다. 로컬 환경에 Docker 저장소를 구축하기..
Docker에서 빌드를 하면 빌드를 실행한 디렉토리 아래에 있는 모든 파일이 Docker 데몬으로 전송된다. 그렇기 때문에 빌드에서 제외하고 싶은 파일이 있는경우는 '.dockerignore' 라는 이름의 파일 안에 해당 파일명을 기술해야 한다. 여러개의 파일을 지정할 때는 줄 바꿈을 하여 파일명을 나열한다. 예를 들어 다음과 같이 빌드 컨텍스트상에 Dockerfile과 Dummyfile을 저장하고, '.dockerignore' 안에 Dummyfile을 지정해보자. $ ls -al -rw-rw-r-- 1 scii scii 9 12월 2 00:56 .dockerignore -rw-rw-r-- 1 scii scii 79 12월 2 00:30 Dockerfile -rw-rw-r-- 1 scii scii 0 1..
컨테이너를 종료할 때에 송신하는 시그널을 설정하려면 STOPSIGNAL 명령을 사용한다. STOPSIGNAL [시그널] STOPSIGNAL 명령에는 시그널 번호 또는 시그널명을 지정할 수 있다. 컨테이너의 헬스 체크 명령 (HEALTHCHECK 명령) 컨테이너 안의 프로세스가 정상적으로 작동하고 있는지를 체크하고 싶을 때는 HEALTHCHECK 명령을 사용한다. HEALTHCHECK [옵션] CMD 실행할 명령 지정할 수 있는 옵션 옵션 설명 기본값 --interval=n 헬스 체크 간격 30s --timeout=n 헬스 체크 타임아웃 30s --retries=N 타임아웃 횟수 3 HEALTHCHECK 명령에서는 Docker에 대해 컨테이너의 상태를 어떻게 확인할지를 설정한다. 예를 들어 5분마다 가동 ..