일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커컨테이너
- svelte
- IAC
- TypeScript
- react
- GraphQL
- bitwiseNot
- 도커
- githook
- docker
- reactjs
- PostgreSQL
- JavaScript
- go
- nestjs
- docker-network
- ...$$restProps
- 번역
- GIT
- cron
- :=
- onDestory
- golang
- Svelte LifeCycle
- smui
- testing
- 인라인핸들러
- apiTest
- mock
- Terraform
- Today
- Total
목록Docker (9)
Den`s blog
도커 네트워크 기능 컨테이너 생성시 기본적으로 브리지를 통해 외부와 통신할 수 있는 호나경을 사용할 수 있지만 사용자의 선택에 따라 여러 네트워크 드라이버를 쓸 수도 있다. 도커가 제공하는 대표적인 네트워크 드라이버 브리지 호스트 논 (none) 컨테이너 오버레이 여기서는 브리지, 호스트, 논, 컨테이너에 대해 알아보도록 하자. 브리지, 호스트, 논이 있는것을 볼 수 있다. docker network inspect 명령어를 이용하여 네트워크의 자세한 정보를알 수 있다. docker network inspect {network_name} bridge 를 한번 살펴보자 Config 항목의 Subnet과 Gateway가 172.17.0.0/16 과 172.17.0.1 로 설정된 것을 볼 수 있다. 이 전에 설..
도커 네트워크 구조 이전에 컨테이너의 네트워크 인터페이스에 eth0와 lo 네트워크 인터페이스가 있는 것을 확인하였다. 언급했던 것과 같이 도커는 컨테이너에 내부 IP를 순차적으로 할당하며, 이 IP는 컨테이너를 재시작할 때마다 변경될 수 있다. 이 내부 IP는 도커가 설치된 호스트, 즉 내부 망에서만 사용가능한 IP 이므로 외부와 연결될 필요가 있는데, 이 과정은 컨테이너를 시작할 때 마다 호스트에 veth... 라는 네트워크 인터페이스를 생성함으로써 이뤄진다. 도커는 각 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성하며 이 인터페이스의 이름은 veth 로 시작한다. veth 인터페이스는 사용자가 직접 생성할 필요는 없고, 컨테이너가 생성될 때 도커엔..
도커 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며, 컨테이너의 변경 사항만 별도로 저장해서 각 컨테이너의 정보를 보존한다. 그러나, 이러한 점에는 치명적인 단점이 있다. 컨테이너를 삭제하면 변경된 정보도 삭제된다는 것이다, mysql 의 예제로 보면 데이터가 보존되지 않는 다는 점이다. 이를 방지하기 위해 컨테이너의 데이터를 영속적(Persistent) 데이터 활용할 수 있는 방법이 몇가지가 있다. 그 중 가장 활용하기 쉬운 방법이 볼륨(Volume)을 활용하는 것이다. 볼륨을 활용하는 방법도 여러가지가 있다. 1. 도커 볼륨 공유 아래 명령어를 입력해 postgre 데이터 베이스를 생성하고, 테이블을 생성해준다. $ docker run -d -e POSTGRES_PASSWORD=passwor..
컨테이너 애플리케이션 구축하기 대부분의 서비스는 단일 프로그램으로 동작하지 않는다. 여러 에이전트나 데이터베이스 등과 연결되어 완전한 서비스로써 동작하는 것이 일반적이다. 이런 서비스를 컨테이너화 (Containerize) 할 때, 여러 개의 어플리케이션을 한 컨테이너에 설치할 수도 있으나, 컨테이너에 애플리케이션 하나만 동작시킬 경우에 컨테이너간의 독립성을 보장하고 동시에 어플리케이션의 버전 관리, 소스코드 모듈화 등이 더욱 쉬워진다. 그래서 이번에 데이터베이스와 워드프레스 웹 서버 컨테이너를 연동해 워드프레스 기반 블로그 서비스를 만들어 보도록하자. 다음명령어를 입력해 각 컨테이너를 생성한다 $ docker run -d --platform linux/amd64 --name wordpressdb -e ..
컨테이너를 외부에 노출하기 컨테이너는 가상 머신과 마찬가지로 가상의 IP 주소를 할당 받는다. 기본적으로 도커는 컨테이너에 172.17.0.x 의 IP 를 순차적으로 할당한다. 도커를 실행한 후, ifconfig 를 사용하면 확인할 수 있다. 도커 초기 이미지에는 최소화된 패키지의 우분투를 실행하면 설치가 되어 있지 않은 경우가 있어서, 설치를 해주어야 한다. apt-get update apt-get install net-tools 왼쪽 이미지를 보자 도커의 NAT IP 인 172.17.0.2 를 할당받은 eth0 인터페이스와 로컬 호스트인 lo 인터페이스가 있는데, 아무런 설정을 하지 않았다면 이 컨테이너는 외부에서 접근할 수 없으며 도커가 설치된 호스트에서만 접근할 수 있다. 외부에 컨테이너의 애플리..
1. 컨테이너 생성 로컬에 없는 이미지를 생성&실행 및 컨테이너 내부로 들어가기를 해보겠다. 옵션으로 붙은 -i -t 는 컨테이너와 상호 입출력이 가능하게 하는 것으로 자세하게 다음에 알아보도록 하자. docker run -i -t ubuntu:14.04 실행하기 되면, 로컬 도커 엔진에 존재하지 않다는 메시지와 함께, 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려 받고, 컨테이너를 생성과 실행을 동시에 하고, 컨테이너 내부로 들어오게 된다. 화살표가 가리키는 의미가 실행된 컨테이너 내부로 들어왔다는 의미이다. 컨테이너에서 기본 사용자는 root 이고, 호스트 이름은 무작위 16진수 해시 값이다. 도커에서 나가는 방법 1. 쉘에서 exit 입력 혹은 Ctrl+D ⇒ 내부에서 빠져 나옴과..
1. 도커 이미지와 컨테이너 이미지와 컨테이너 : 도커 엔진에서 사용하는 기본 단위이자 핵심 1. 도커 이미지 컨테이너를 생성할 때 필요한 요소, 가상머신에서 사용하는 iso 파일과 비슷한 개념 이미지는 여러 계층 으로 된 바이너리 파일이 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됨. 도커 명령어로 내려받을 수 있고, 별도의 설치는 필요 없다. 이미지 이름의 구성 [저장소 이름]/[이미지 이름]:[태그] 로 구성 alicek106/ubuntu:14.04 # 저장소이름/이미지이름:태그 ubuntu:latest # 이미지이름:태그 저장소 (Repository) : 이미지가 저장된 장소, 명시되지 않은 경우 도커에서 기본적으로 제공하는 이미지 저장소인 Docker Hub 의 공식이미지. 생략..
1. 애플리케이션의 개발과 배포가 편해진다. 서버를 부팅할 때 실행되는 운영체제 : 호스트OS 도커 컨테이너는 호스트OS 위에서 실행되는 격리된 공간 ⇒ 독립된 개발환경을 보장 받을 수 있음. 컨테이너를 도커 이미지 라는 일종의 패키지로 만들어 운영서버에 전달하면 끝 ⇒ 서비스를 개발 했을 때 사용했던 환경을 다른 서버에서도 컨테이너로서 똑같이 복제할 수 있기 때문에 개발/운영 환경의 통합이 가능 2. 여러 어플리케이션의 독립성과 확장성이 높아진다. 모놀리스 (Monolith) 애플리케이션 : 여러모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식 ⇒ 소규모 서비스엔 어울릴 수 있으나, 서비스가 거대해질수록 소프트웨어의 확장성 및 유연성이 줄어든다는 치명적인 단점이 있음 마이크로서비스 (M..
1. 도커에 관하여 도커 (Docker) 는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로써 좀 더 쉽게 사용할 수 있게 만들어진 오픈 소스프로젝트이다. Go언어로 작성되어 있음. 2013년 3월 첫 Release 2. 도커 프로젝트 도커 컴포즈 레지스트리 도커 퍼브 Docker for Desktop 기타 등등 주로 Docker 라 함은, Docker Engine 혹은 Docker 와 관련된 모든 프로젝트를 의미. Docker Engine이 컨테이너를 생성하고 관리하는 주체, 나머지들은 이를 좀 더 효율적으로 사용하기 위함이 큼. 3. 가상 머신과 도커 컨테이너 가상머신 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식, 이러한 ..