[Docker] 멀티 컨테이너 서비스 구성 (feat. Docker Compose)
·
OS/Docker
# 멀티 컨테이너 서비스 구성 이번에는 wordpress와 mysql을 이용한 web application을 구성해 볼 것이다. 구성을 할 때 멀티 컨테이너 서비스를 사용하여 구성을 해볼 것이다.  이번 구성은 다음 그림과 같이 수행을 해볼 것이다.# 디렉터리 및 볼륨 생성ubuntu@docker:~$ mkdir my-webdb && cd $_ubuntu@docker:~$ docker volume create mydb_dataubuntu@docker:~$ docker volume create myweb_data 먼저 my-webdb라는 디렉터리를 생성하고 이동해준다. 이 디렉터리 안에서 docker 설정 파일 등을 관리할 것이다. 다음으로 mydb_data 와 myweb_data 라는 두 docker 볼..
[Docker] Docker Compose
·
OS/Docker
이전에는 컨테이너를 하나씩 하나씩 동작 시켜서 번거로움이 있었다. 예를 들면 웹 어플리케이션을 테스트 하려면 웹 서버 컨테이너, 데이터베이스 컨테이너 두개의 컨테이너를 각각 생성해야했었다. # Docker ComposeDocker Compose는 여러 컨테이너를 정의하고 함께 관리할 수 있도록 해주는 도구이다. 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의하고 컨테이너 묶음으로 관리할 수 있느 작업 환경을 제공하는 관리 도구이다.   # Docker Compose 주요 기능 (중요)1. 서비스 정의여러 서비스를 docker-compose.yml 파일에 정의할 수 있다. 각각의 서비스에 대한 이미지, 볼륨, 네트워크 등을 정의해서 동시에 관리할 수 있다.  2. 다중 컨테이너 환경 관리docker..
[Docker] Python Flask 웹 서비스 배포
·
OS/Docker
Docker 컨테이너에서 Python Flask 웹 애플리케이션을 실행하는 데 필요한 설정을 해보고자 한다. 설정을 한 후 테스트를 해보고 볼륨 마운트를 통해 호스트 파일을 컨테이너와 연결하여, 코드 수정 시 실시간 반영을 확인해보고자 한다.  # Python & Flask  디렉터리 생성ubuntu@docker:~/ch11$ mkdir py_flask && cd $_ #  Docker file 작성ubuntu@docker:~/ch11/py_flask$ vi dockerfile-py Python Flask라는 새로운 디렉터리를 생성한 후 Python Flask 애플리케이션을 실행하기 위한 환경을 구성하는 Dockerfile을 작성하고자 한다.  # dockerfile-py 내용FROM python:3.8..
[Docker(go, shell-scr)] Multi-stage Build 이미지 경량화
·
OS/Docker
Multi-stage build애플리케이션 개발 시 개발 환경에서 사용한 라이브러리나 개발 지원 툴이 제품 환경에서 반드시 사용되는 것은 아니다. 제품 환경에서 애플리케이션을 실행하기 위해서 최소한으로 필요한 실행 모듈만 배치하는 것이 컴퓨터를 효율적으로 활용하는 데 도움이 된다. # Multi-stage build여러번 빌드를 거쳐 도커 이미지의 용량을 최소화 하는 것. 컨테이너 이미지를 만들면서 빌드 등에는 필요하다. 하지만 최종 컨테이너 이미지에는 필요 없는 환경을 제거할 수 있로고 단계를 나우워 기반 이미지를 만드는 것이 좋다.  멀티스테이지 빌드를 사용하게 되면 그림처럼 컨테이너 실행 시에는 빌드에 사용한 파일 및 디렉토리와 같은 의존 파일들이 모드 삭제된 상태로 컨테이너가 실행하게 되고, 좀 ..
[Docker] 데이터 지속성을 위한 Volume 구성
·
OS/Docker
Docker에서 Mysql 컨테이너를 실행하고 데이터를 지속적으로 유지하는 볼륨을 사용하여, mysql 서버에 데이터를 저장하고 컨테이너를 삭제해도 데이터가 유지되는지 확인을 해볼 것이다.  1. MySQL 컨테이너 생성 및 볼륨 마운트docker run -itd --name=mydb -e MYSQL_ROOT_PASSWORD=pass123# -e MYSQL_DATABASE=busanit -v ${PWD}/mydb-data:/var/lib/mysql mysql:5.7-debian 5dfaa2c63bc2d0ac754de146f9bda6477c663a02058ef18ca26ddd45e01bbcb7 docker run 명령어를 사용하여 mydb라는 컨테이너를 실..
[Docker] scratch 이미지 경량화
·
OS/Docker
이번에는 scratch를 이용해서 애플리케이션을 최대한 경량화된 상태로 도커 이미지를 만들어 보는 실습을 통해 scratch에 대한 이해를 하고자 한다. 먼저 scratch를 통해 애플리케이션 이미지 생성을 위한 실행파일 생성, c 컴파일러 gcc를 설치하고자 한다. ubuntu@docker:~/ch11$ mkdir lightweight2 && cd $_ubuntu@docker:~/ch11/lightweight2$ sudo apt install -y gcc# C 프로그램으로 정적 바이너리 생성(실행시 go to lightweight image! 메시지 출력)ubuntu@docker:~/ch11/lightweight2$ vim go-to-lightweight-image.c#include int main()..