본문 바로가기

Docker/이론9

Docker-Compose 설치 (1) docker-compose 설치 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose (2) 권한 부여 sudo chmod +x /usr/local/bin/docker-compose ※ docker-compose설치 후 명령 이 실패하면 경로를 확인하십시오. /usr/bin경로에 있는 다른 디렉토리에 대한 심볼릭 링크를 만들 수도 있습니다 . sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose (3) 설치 후 version 확인 .. 2021. 11. 18.
[Docker] 10. Docker-Compose (from build to operation) Docker-Compose 여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴 하나의 서비스를 운영하기 위해서는 여러 개의 애플리케이션이 동작해야 함 컨테이너화 된 애플리케이션들을 통합 관리할 수 있음 Docker-Compose로 컨테이너 실행 예를 들어, docker hub에 올라가 있는 wordpress의 경우 아래와 같이 yaml 파일이 구성되어 있다. version: '3.1' services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: exampleuser WORDPRESS_DB_PASSWORD: examplepass WORDPRE.. 2021. 11. 18.
[Docker] 8.Container Storage [Docker Container Volume] - 컨테이너 이미지는 ReadOnly. 즉, 수정할 수 없고 새로운 내용을 집어넣을 수 없다. - Docker run 후 컨테이너에 추가되는 데이터들은 이미지 Layer에 추가되는 것이 아니라 별도의 RW Layer에 저장 ※ Union File System(=overlay) : Docker가 가지고 있는 Layer를 관리해주는 기술. - 컨테이너 이미지의 ReadOnly Layer와 RW Layer의 변경사항을 마치 하나인 것처럼 보여주는 기술. MySQL 컨테이너를 잘 운영 중이었다고 가정하자. 실수로 docker rm 명령어를 입력할 경우, 이미지의 ReadOnly Layer와 추가된 데이터의 RW Layer가 삭제되고 DB데이터들은 복원할 수 없다. .. 2021. 9. 23.
[Docker] 7.Container 리소스 관리 [컨테이너 하드웨어 리소스(CPU, Mem, Disk I/O) 제한] - 기본적으로 컨테이너는 호스트 하드웨어 리소스의 사용 제한을 받지 않는다. 리소스를 제한하지 않으면 하나의 컨테이너가 모든 리소스를 사용할 수 있게 되고, 다른 컨테이너가 상대적으로 적은 리소스를 사용할 수 밖에 없게 된다. docker run 과정에서 옵션을 통해 리소스를 제한할 수 있다. (1) Memory 리소스 제한 - 제한 단위는 b, k, m, g 로 할당 옵션 의미 --memory, -m 컨테이너가 사용할 최대 메모리 양을 지정 --memory-swap 컨테이너가 사용할 스왑 메모리 영역에 대한 설정 메모리+스왑, 생략 시 메모리의 2배가 설정됨 --memory-reservation --memory 값보다 적은 값으로 구.. 2021. 9. 7.
[Docker] 5.Container 운영 ※ Docker Host : 리눅스 시스템에 Docker Daemon을 띄어서 Running 중 인 상태. ※ Docker Hub : 도커 컨테이너를 모아놓은 저장소. 다른 말로 Registry [컨테이너 이미지 관리] (1) 명령어 이미지 검색 $ docker search [옵션] 이미지 다운로드 $ docker pull [옵션] 다운 받은 이미지 목록 출력 $ docker images 다운 받은 이미지 상세보기 : 다운 받은 이미지의 정보(어떻게 만들어졌는 지)를 확인 $ docker inspect [옵션] 이미지 삭제 $ docker rmi [옵션] [컨테이너를 실행하고 종료하는 명령어] - 컨테이너 이미지 실행, 삭제 1. 컨테이너 실행 (1) 명령어 컨테이너 생성 $ docker create [.. 2021. 8. 24.
[Docker] 4.Container Registry Container Registry : 컨테이너를 모아놓은 저장소 Q1. 컨테이너 보관창고(Container Registry) Registry : 컨테이너 이미지를 저장하는 저장소 Docker Hub : hub.docker.com Private Registry : 사내의 컨테이너 저장소 Q2. docker hub(registry) https://hub.docker.com/ Docker Hub Container Image Library | App Containerization We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such .. 2021. 8. 12.
[Docker] 3.Container(3) Q1. 무엇을 컨테이너로 만드는가? - 개발한 애플리케이션(실행파일)과 운영환경이 모두 들어있는 독립된 공간. - 개발한 프로그램과 실행환경을 모두 컨테이너로 만들어, MSA(Micro Service Architecture) 환경이 Polyglot 애플리케이션 운영. 예를 들어, shopping cart는 java, competed order는 php로 Inventory&Item price는 node.js로 Application을 개발하는 데 가장 적합한 언어를 선택하여 하나의 플랫폼(E-commerce Platform)을 구현할 수 있다. - 위와 같이 개발될 경우, Shopping Cart에 업데이트할 사항이 있다면 해당 컨테이너만 업데이트시켜주면 된다. 독립된 공간으로 서비스가 되기 때문에 다른 컨.. 2021. 8. 3.
[Docker] 2.Container(2) [컨테이너와 컨테이너 이미지의 구조] - 컨테이너는 하나의 Application 프로세스 - 컨테이너 1개 = Application 1개 - 컨테이너의 특징 : 완전하게 Application 들이 독립된 공간으로 분리되어 운영됨. ○ CPU, Memory, Network, Disk 등 H/W 리소스를 각각 따로 가지고 있다. ○ 또한, 사용되는 Hostname, User ID 도 모두 독립적. - 즉, Frontend 단의 Node.js 는 PHP, MySQL(DB)에 동작되면서 영향을 주지 않는다. [Docker Architecture] ※ Docker Host : Docker Daemon이 동작되고 있는 리눅스 커널이 있는 시스템 ○ Docker가 Container들을 실행할 수 있는 Platform.. 2021. 7. 30.
[Docker] 1.Container 1. 왜 리눅스에서 운영해야 하는가? - 리눅스 커널의 기능을 기반으로 컨테이너가 만들어짐. (1) chroot : 독립된 공간을 형성 (2) namespace : 독립된 공간에 6가지 isolate를 제공 (각 컨테이너가 마치 하나의 가상 시스템인 것처럼) (3) cgroup : 필요한만큼의 H/W를 지원. ※ Container Engine : Linux Kernel에 있는 Storage, Namespaces, Networking 을 Docker Platform 에서 쓸 수 있도록 지원해주는 것이 Container Engine이다. ※ Windows와 MacOS에는 kernel이 없으므로, Hypervisor 를 활성화시켜서 그 위에 Container를 돌린다. 즉, 라이센스 비용이 들어가지 않는 Li.. 2021. 7. 29.