SlideShare a Scribd company logo
1 of 60
Download to read offline
XEHub 박웅빈
Docker 기반 개발환경 구축
1. Docker?
2. Image & Container 사용법
3. XE3 Image 만들기
4. Dockerfile로 XE3 Image 만들기
5. Docker-compose로 XE3 바로 사용하기
Docker?
- container 기반의 오픈소스 가상화 플랫폼
Docker?
XE3 & XEHub
- 기존의 가상화 방식에 비해서 성능의 손실이 거의 없음
- 2003년에 발표, Go 언어로 작성된 오픈 소스
- https://www.docker.com
Image & Container 사용법
- Docker Hub에서 image를 검색
docker search [OPTIONS] TERM
XE3 & XEHub
Container & Image 사용법
- Docker Hub에서 image를 다운로드
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
- image 이름 뒤에 태그가 없으면 기본으로

latest 이미지를 다운로드
XE3 & XEHub
[image의 특정 버전이나 태그를 지정해서 다운로드]
Container & Image 사용법
docker images [OPTIONS] [REPOSITORY[:TAG]]]
- 다운로드 받은 image의 목록을 출력
- image를 container로 생성
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
XE3 & XEHub
Container & Image 사용법
-i : container에 STDIN을 연결
-t : container에 터미널을 할당
— name : container에 이름을 지정
- container의 목록 출력
docker ps [OPTIONS]
-a : 모든 상태의 container 출력
- 정지 상태인 container를 시작
docker start [OPTIONS] CONTAINER [CONTAINER...]
XE3 & XEHub
Container & Image 사용법
- 실행 상태인 container에 접근
docker attach [OPTIONS] CONTAINER
- image를 새로운 container로 만들어서 실행
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[이미지가 저장되어 있는 상태에서 run 했을 때]
XE3 & XEHub
[그냥 실행 했을 때와 command를 지정 했을 때의 차이]
Container & Image 사용법
XE3 & XEHub
- container 관리
docker container COMMAND
prune : 종료된 모든 container 삭제
Container & Image 사용법
XE3 Image 만들기
XE3 Image 만들기 진행 과정
XE3 & XEHub
- ubuntu image에 php 설치
- XE3:0.1 image에 composer 설치
- XE3:0.2 image에 XE3 download
- XE3:0.3 image에 apache 설치 & 설정
XE3:0.1
XE3:0.2
XE3:0.3
XE3:0.4
- XE3:0.4 container와 mysql container연결
XE3 & XEHub
- apt-get update
- apt-get install php php-fpm php-mbstring php-dom php-zip php-pdo
php-tokenizer php-xml php-ctype php-json php-mysql php-curl php-gd
php-cgi php-cli -y
XE3 Image 만들기
[ubuntu container 생성하고 php install]
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
XE3 Image 만들기
XE3 & XEHub
[php가 설치된 container image로 만들기]
- container를 image로 생성
-m : 변경 내역을 메시지를 저장
- Docker Hub(https://hub.docker.com) 회원가입
XE3 Image 만들기
XE3 & XEHub
[생성한 image를 Docker Hub에 push]
- docker에 login
- 생성한 image를 docker hub로 Push
docker push [OPTIONS] NAME[:TAG]
XE3 Image 만들기
XE3 & XEHub
[생성한 image를 Docker Hub에 push]
[push한 image가 추가된 repository]
[repository 상세 페이지에서 short description 작성]
XE3 Image 만들기
XE3 & XEHub
[생성한 image를 Docker Hub에 push]
[composer가 설치된 image]
XE3 Image 만들기
XE3 & XEHub
[생성한 image를 container로 생성해서 composer 설치]
- apt-get install curl -y
- curl -sS https://getcomposer.org/installer | php
- mv composer.phar /usr/local/bin/composer
- 이미지의 상세 정보를 출력
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
[ubuntu:latest의 layer]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
[sirwoongke/xe3:0.1의 layer]
[sirwoongke/xe3:0.2의 layer]
[php install]
[php install]
[composer install]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
ubuntu:latest ubuntu:latest
php install
ubuntu:latest
php install
composer install
[ubuntu:latest] [sirwoongke/xe3:0.1] [sirwoongke/xe3:0.2]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
- 저장된 image를 삭제
docker rmi [OPTIONS] IMAGE [IMAGE...]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
XE3 Image 만들기
XE3 & XEHub
[Image Layer]
XE3 Image 만들기
XE3 & XEHub
[xe download 이미지 생성하기]
- cd /var/www
- apt-get install git vim -y
- git clone https://github.com/xpressengine/xpressengine.git
- cd xpressengine
- composer install
XE3 Image 만들기
XE3 & XEHub
[xe download 이미지 생성하기]
[XE3:0.3 image commit, push]
[container에서 사용중인 포트 조회]
XE3 Image 만들기
XE3 & XEHub
[image에 apache 설치하기]
docker run -p : 로컬 컴퓨터의 포트와 container의 포트를 연결
ctrl + pq
XE3 Image 만들기
XE3 & XEHub
[image에 apache 설치하기]
- apt-get install apache2 -y
- cd /etc/apache2/sites-available/
- vi xe.conf
<VirtualHost *:80>
ServerName yourdomain.tld
ServerAdmin webmaster@localhost
DocumentRoot /var/www/xpressengine
<Directory /var/www/xpressengine>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
- a2dissite 000-default.conf
- a2ensite xe.conf
- a2enmod rewrite
- chgrp -R www-data /var/www/xpressengine
- chmod -R 775 /var/www/xpressengine
- service apache2 restart
[xe.conf 파일 내용]
XE3 Image 만들기
XE3 & XEHub
[image에 apache 설치하기]
[127.0.0.1로 접속 했을 때 XE3 설치 페이지가 출력]
XE3 Image 만들기
XE3 & XEHub
[image에 apache 설치하기]
XE3 Image 만들기
XE3 & XEHub
[xe container와 mysql container 연결]
-d : deattach mode로 실행
-e : 환경변수를 설정
[mysql container가 실행 중]
- 실행중인 container에 command를 실행
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
[-e MYSQL_DATABASE로
XE3 Image 만들기
XE3 & XEHub
[xe container와 mysql container 연결]
지정한 테이블이 생성]
- service apache2 start
XE3 Image 만들기
XE3 & XEHub
[ubuntu Image 생성하고 php install]
—link : 다른 container와의 연결을 추가
- 127.0.0.1 접속 후 xe 설치
- Database Host는 mysql container의 이름
Dockerfile로 XE3 이미지 만들기
- 설치해야 하는 패키지, 실행해야 되는 명령어 등을 작성하는 파일
Dockerfile?
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
- 작성된 내용으로 build해서 image 생성
- build된 이미지의 구성 요소를 확인 가능
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
<VirtualHost *:80>
ServerName yourdomain.tld
ServerAdmin webmaster@localhost
DocumentRoot /var/www/xpressengine
<Directory /var/www/xpressengine>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
[xe.conf 파일 내용]
FROM : 생성할 image의 base image
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
FROM ubuntu:latest
LABEL "maintainer"="sirwoongke"
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update
RUN apt-get install php php-fpm php-mbstring php-dom php-zip php-pdo
php-tokenizer php-xml php-ctype php-json php-mysql php-curl php-gd php-cgi php-
cli -y
RUN apt-get install curl git apache2 -y
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
WORKDIR /var/www
RUN git clone https://github.com/xpressengine/xpressengine.git
WORKDIR /var/www/xpressengine
RUN composer install
RUN chgrp -R www-data /var/www/xpressengine
RUN chmod -R 775 /var/www/xpressengine
ADD xe.conf /etc/apache2/sites-available
RUN a2dissite 000-default.conf
RUN a2ensite xe.conf
RUN a2enmod rewrite
RUN service apache2 restart
CMD apachectl -DFOREGROUND
LABEL : image의 meta-data
ENV : Dockerfile에서 사용할 환경변수 지정
RUN : build 과정 중 container 내부에서
실행할 명령
ENV : Dockerfile에서 사용할 환경변수 지정
WORKDIR : 명령어를 실행할 디렉터리를 지정
RUN 명령어로 cd를 할 경우 다음 실행할 명령어 실행 전에 root 디렉터리로
이동하기 때문에 디렉터리 이동은 WORKDIR 명령어를 사용
ADD : 로컬에 있는 파일을 지정한 image의 경로에 추가
CMD : container가 시작될 때 실행한 명령어
docker run에서 받는 command로 무시 될 수 있음
[Dockerfile build]
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
- Dockerfile을 image로 build
docker build [OPTIONS] PATH | URL | -
-t : image의 tag를 지정
[github repository 생성]
[Automated Build 설정]
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
- 추가한 repository를 선택
[Automated Build 설정]
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
- 간단한 설명 작성 및 설정 후 생성
[생성된 Automated Build Repository]
[Automated Build 설정]
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
[작성한 Dockerfile을 github에 push]
[Automated Build 설정]
Dockerfile로 XE3 이미지 만들기
XE3 & XEHub
- 연동된 repository에 Dockerfile이 push 되면
자동으로 build 시작
docker-compose로
XE3, Mysql 바로 사용하기
docker-compose로 XE3 바로 사용하기
XE3 & XEHub
- 여러 개의 container를 사용해서 애플리케이션을 실행 할 때 하나의 서비스로 정의해서 관리
docker-compose?
- docker-compose.yml 작성된 설정 내용으로 container를 생성
docker-compose로 XE3 바로 사용하기
XE3 & XEHub
version: '3.0'
services:
xe:
image: sirwoongke/xe3:0.4
ports:
- "80:80"
links:
- xe_db:db
command: apachectl -DFOREGROUND
xe_db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=xe
[docker-compose.yml]
version : yml 파일 포맷의 버전
services : 생성될 container의 목록 작성
xe, xe_db : 생성될 container의 이름
[XE3 Image를 사용]
docker-compose로 XE3 바로 사용하기
XE3 & XEHub
version: '3.0'
services:
xe:
build:
context: .
dockerfile: ./Dockerfile
image: xe_build_image
links:
- xe_db
ports:
- "80:80"
xe_db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=xe
[docker-compose.yml]
build : Dockerfile에 관련된 정보를 작성
context : Dockerfile이 존재 하는 경로 작성
dockerfile : Dockerfile의 이름
[XE3 Dockerfile을 사용]
- docker-compose.yml에 작성된 내용으로 container를 생성
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose로 XE3 바로 사용하기
XE3 & XEHub
docker-compose로 XE3 바로 사용하기
XE3 & XEHub
- docker-compose로 실행된 container의 목록 출력
docker-compose ps [options] [SERVICE...]
- docker-compose up으로 생성된 container를 종료하게 삭제
docker-compose down [options]
docker-compose로 XE3 바로 사용하기
XE3 & XEHub
부록 A. 개발환경과
source code 분리하기
- 앞서 작성한 image나 Dockerfile을 사용하면 container가 종료 되면서 database의
data가 손실되고 source code를 수정 하기가 불편하다는 문제가 있음
XE3 & XEHub
개발 환경과 source code 분리하기
- 개발에 필요한 php, apache, composer 등 인프라 부분은 container를 활용하고
source code는 host에서 작업하는 분리가 필요
- 개발 환경 공유는 개발 환경에 대한 설정을 작성한 image나 Dockerfile을 공유해서 개발 환경을 공유
- database의 손실은 database data의 저장을 local에 저장 해서 database container가 다시 시작
되더라도 기존에 저장된 database data를 사용하도록 설정
- php, apache가 설치된 image 생성
xpressengine : source code가 저장된 폴더
XE3 & XEHub
개발 환경과 source code 분리하기
database : database의 data가 저장될 폴더
-v : 호스트와 volume을 공유
XE3 & XEHub
개발 환경과 source code 분리하기
[database data local에 저장]
 : 명령어 줄바꿈
XE3 & XEHub
개발 환경과 source code 분리하기
[개발 환경이 설정된 container와 source code 연결]
XE3 & XEHub
개발 환경과 source code 분리하기
XE3 & XEHub
개발 환경과 source code 분리하기
version: '3.0'
services:
server:
image: volume_test:1.1
ports:
- "80:80"
links:
- xe_db:db
volumes:
- /Users/sirwoongke/source/docker/appendix/xpressengine:/var/www/xpressengine
command: apachectl -DFOREGROUND
xe_db:
image: mysql:5.7
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=xe
volumes:
- /Users/sirwoongke/source/docker/appendix/database:/var/lib/mysql
[docker-compose.yml]
[docker-compose로 volume 연결]
XE3 & XEHub
개발 환경과 source code 분리하기
Q & A

More Related Content

What's hot

[AWS Migration Workshop] 데이터베이스를 AWS로 손쉽게 마이그레이션 하기
[AWS Migration Workshop]  데이터베이스를 AWS로 손쉽게 마이그레이션 하기[AWS Migration Workshop]  데이터베이스를 AWS로 손쉽게 마이그레이션 하기
[AWS Migration Workshop] 데이터베이스를 AWS로 손쉽게 마이그레이션 하기Amazon Web Services Korea
 
Grokking #9: Building a real-time and offline editing service with Couchbase
Grokking #9: Building a real-time and offline editing service with CouchbaseGrokking #9: Building a real-time and offline editing service with Couchbase
Grokking #9: Building a real-time and offline editing service with CouchbaseOliver N
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축Amazon Web Services Korea
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration GuideJi-Woong Choi
 
Prometheus
PrometheusPrometheus
Prometheuswyukawa
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향Young-Ho Cho
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon Web Services Korea
 
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...Amazon Web Services Korea
 
Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...
Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...
Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...Amazon Web Services Korea
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?VMware Tanzu Korea
 
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...Amazon Web Services Korea
 
Docker Advanced registry usage
Docker Advanced registry usageDocker Advanced registry usage
Docker Advanced registry usageDocker, Inc.
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
Introduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day IsraelIntroduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day IsraelAmazon Web Services
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험NHN FORWARD
 
Real time analytics with Netty, Storm, Kafka
Real time analytics with Netty, Storm, KafkaReal time analytics with Netty, Storm, Kafka
Real time analytics with Netty, Storm, KafkaTrieu Nguyen
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 

What's hot (20)

[AWS Migration Workshop] 데이터베이스를 AWS로 손쉽게 마이그레이션 하기
[AWS Migration Workshop]  데이터베이스를 AWS로 손쉽게 마이그레이션 하기[AWS Migration Workshop]  데이터베이스를 AWS로 손쉽게 마이그레이션 하기
[AWS Migration Workshop] 데이터베이스를 AWS로 손쉽게 마이그레이션 하기
 
Grokking #9: Building a real-time and offline editing service with Couchbase
Grokking #9: Building a real-time and offline editing service with CouchbaseGrokking #9: Building a real-time and offline editing service with Couchbase
Grokking #9: Building a real-time and offline editing service with Couchbase
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
 
Prometheus
PrometheusPrometheus
Prometheus
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
Amazon EC2 Container Service 자세히 보기 - 김상필 (AWS 솔루션즈 아키텍트)
 
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
PUBG: Battlegrounds 라이브 서비스 EKS 전환 사례 공유 [크래프톤 - 레벨 300] - 발표자: 김정헌, PUBG Dev...
 
Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...
Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...
Airbnb가 직접 들려주는 Kubernetes 환경 구축 이야기 - Melanie Cebula 소프트웨어 엔지니어, Airbnb :: A...
 
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
MSA 전략 1: 마이크로서비스, 어떻게 디자인 할 것인가?
 
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
AWS Lambda 내부 동작 방식 및 활용 방법 자세히 살펴 보기 - 김일호 솔루션즈 아키텍트 매니저, AWS :: AWS Summit ...
 
Docker Advanced registry usage
Docker Advanced registry usageDocker Advanced registry usage
Docker Advanced registry usage
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
Introduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day IsraelIntroduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day Israel
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험
 
Real time analytics with Netty, Storm, Kafka
Real time analytics with Netty, Storm, KafkaReal time analytics with Netty, Storm, Kafka
Real time analytics with Netty, Storm, Kafka
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 

Similar to Docker 기반 개발환경 구축 - XE Open seminar #2

[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container DayAmazon Web Services Korea
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제choi sungwook
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTLOGISPOT
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce DockerYongbok Kim
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)CONNECT FOUNDATION
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
Linux in Visual Studio
Linux in Visual StudioLinux in Visual Studio
Linux in Visual StudioHeecheol Yang
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfLee Dong Wook
 

Similar to Docker 기반 개발환경 구축 - XE Open seminar #2 (20)

[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
Docker
DockerDocker
Docker
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
Linux in Visual Studio
Linux in Visual StudioLinux in Visual Studio
Linux in Visual Studio
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdf
 

More from XpressEngine

Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3XpressEngine
 
XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2XpressEngine
 
XE Open seminar #2 - keynote
XE Open seminar #2 - keynoteXE Open seminar #2 - keynote
XE Open seminar #2 - keynoteXpressEngine
 
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기XpressEngine
 
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩XpressEngine
 
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기XpressEngine
 
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게XpressEngine
 
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기XpressEngine
 
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7XpressEngine
 
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래XpressEngine
 
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기XpressEngine
 
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로XpressEngine
 
[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략XpressEngine
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXpressEngine
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XpressEngine
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXpressEngine
 
XECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning LaravelXECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning LaravelXpressEngine
 
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XpressEngine
 
XECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXpressEngine
 
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XpressEngine
 

More from XpressEngine (20)

Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3Github 100% 활용하기 - XE Open seminar #3
Github 100% 활용하기 - XE Open seminar #3
 
XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2XE3 SEO를 다루기 - XE Open seminar #2
XE3 SEO를 다루기 - XE Open seminar #2
 
XE Open seminar #2 - keynote
XE Open seminar #2 - keynoteXE Open seminar #2 - keynote
XE Open seminar #2 - keynote
 
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
[XECon2016] B-1 안정수 라라벨 Scout을 활용한 검색 기능 둘러보기
 
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
[XECon2016] A-1 정규창 [React] Immutable한 양방향 데이터 바인딩
 
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
[XECon2016] C-4 한성민 AngularJS 1, 2 그리고 실무환경 적용 이야기
 
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
[XECon2016] C-2 홍성범 XE3 Theme 제작 - 자유롭게, 그리고 편하게
 
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
[XECon2016] C-1 오승훈 XE3로 웹사이트 만들기
 
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7[XECon2016] B-4 변종원 CodeIgniter와 PHP7
[XECon2016] B-4 변종원 CodeIgniter와 PHP7
 
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
[XECon2016] B-3 성기진 XE1 가지치기와 오픈소스 생태계의 미래
 
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
[XECon2016] B-2 정광섭 Laravel로 스타트업 기술 스택 구성하기
 
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
[XECon2016] A-3 박형식 Frontend stack의 변화 : jQuery, BackboneJS, ReactJS 중심으로
 
[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략[XECon2016] A-2 임형주 Webpack 실무 적용전략
[XECon2016] A-2 임형주 Webpack 실무 적용전략
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravelXECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
XECon2015 :: [2-1] 정광섭 - 처음 시작하는 laravel
 
XECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning LaravelXECon2015 :: [1-2] 이현석 - Learning Laravel
XECon2015 :: [1-2] 이현석 - Learning Laravel
 
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
XECon2015 :: [3-3] 김찬희 & 전창완- 네이버 아이디 로그인 소개 및 Laravel 적용
 
XECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloud
 
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
XECon2015 :: [3-2] 오승훈 - XE3 플러그인 제작 소개
 

Docker 기반 개발환경 구축 - XE Open seminar #2

  • 1. XEHub 박웅빈 Docker 기반 개발환경 구축
  • 2. 1. Docker? 2. Image & Container 사용법 3. XE3 Image 만들기 4. Dockerfile로 XE3 Image 만들기 5. Docker-compose로 XE3 바로 사용하기
  • 4. - container 기반의 오픈소스 가상화 플랫폼 Docker? XE3 & XEHub - 기존의 가상화 방식에 비해서 성능의 손실이 거의 없음 - 2003년에 발표, Go 언어로 작성된 오픈 소스 - https://www.docker.com
  • 5. Image & Container 사용법
  • 6. - Docker Hub에서 image를 검색 docker search [OPTIONS] TERM XE3 & XEHub Container & Image 사용법
  • 7. - Docker Hub에서 image를 다운로드 docker pull [OPTIONS] NAME[:TAG|@DIGEST] - image 이름 뒤에 태그가 없으면 기본으로
 latest 이미지를 다운로드 XE3 & XEHub [image의 특정 버전이나 태그를 지정해서 다운로드] Container & Image 사용법 docker images [OPTIONS] [REPOSITORY[:TAG]]] - 다운로드 받은 image의 목록을 출력
  • 8. - image를 container로 생성 docker create [OPTIONS] IMAGE [COMMAND] [ARG...] XE3 & XEHub Container & Image 사용법 -i : container에 STDIN을 연결 -t : container에 터미널을 할당 — name : container에 이름을 지정 - container의 목록 출력 docker ps [OPTIONS] -a : 모든 상태의 container 출력
  • 9. - 정지 상태인 container를 시작 docker start [OPTIONS] CONTAINER [CONTAINER...] XE3 & XEHub Container & Image 사용법 - 실행 상태인 container에 접근 docker attach [OPTIONS] CONTAINER
  • 10. - image를 새로운 container로 만들어서 실행 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] [이미지가 저장되어 있는 상태에서 run 했을 때] XE3 & XEHub [그냥 실행 했을 때와 command를 지정 했을 때의 차이] Container & Image 사용법
  • 11. XE3 & XEHub - container 관리 docker container COMMAND prune : 종료된 모든 container 삭제 Container & Image 사용법
  • 13. XE3 Image 만들기 진행 과정 XE3 & XEHub - ubuntu image에 php 설치 - XE3:0.1 image에 composer 설치 - XE3:0.2 image에 XE3 download - XE3:0.3 image에 apache 설치 & 설정 XE3:0.1 XE3:0.2 XE3:0.3 XE3:0.4 - XE3:0.4 container와 mysql container연결
  • 14. XE3 & XEHub - apt-get update - apt-get install php php-fpm php-mbstring php-dom php-zip php-pdo php-tokenizer php-xml php-ctype php-json php-mysql php-curl php-gd php-cgi php-cli -y XE3 Image 만들기 [ubuntu container 생성하고 php install]
  • 15. docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] XE3 Image 만들기 XE3 & XEHub [php가 설치된 container image로 만들기] - container를 image로 생성 -m : 변경 내역을 메시지를 저장
  • 16. - Docker Hub(https://hub.docker.com) 회원가입 XE3 Image 만들기 XE3 & XEHub [생성한 image를 Docker Hub에 push] - docker에 login
  • 17. - 생성한 image를 docker hub로 Push docker push [OPTIONS] NAME[:TAG] XE3 Image 만들기 XE3 & XEHub [생성한 image를 Docker Hub에 push] [push한 image가 추가된 repository]
  • 18. [repository 상세 페이지에서 short description 작성] XE3 Image 만들기 XE3 & XEHub [생성한 image를 Docker Hub에 push]
  • 19. [composer가 설치된 image] XE3 Image 만들기 XE3 & XEHub [생성한 image를 container로 생성해서 composer 설치] - apt-get install curl -y - curl -sS https://getcomposer.org/installer | php - mv composer.phar /usr/local/bin/composer
  • 20. - 이미지의 상세 정보를 출력 docker inspect [OPTIONS] NAME|ID [NAME|ID...] XE3 Image 만들기 XE3 & XEHub [Image Layer]
  • 21. [ubuntu:latest의 layer] XE3 Image 만들기 XE3 & XEHub [Image Layer] [sirwoongke/xe3:0.1의 layer] [sirwoongke/xe3:0.2의 layer] [php install] [php install] [composer install]
  • 22. XE3 Image 만들기 XE3 & XEHub [Image Layer] ubuntu:latest ubuntu:latest php install ubuntu:latest php install composer install [ubuntu:latest] [sirwoongke/xe3:0.1] [sirwoongke/xe3:0.2]
  • 23. XE3 Image 만들기 XE3 & XEHub [Image Layer]
  • 24. - 저장된 image를 삭제 docker rmi [OPTIONS] IMAGE [IMAGE...] XE3 Image 만들기 XE3 & XEHub [Image Layer]
  • 25. XE3 Image 만들기 XE3 & XEHub [Image Layer]
  • 26. XE3 Image 만들기 XE3 & XEHub [Image Layer]
  • 27. XE3 Image 만들기 XE3 & XEHub [xe download 이미지 생성하기] - cd /var/www - apt-get install git vim -y - git clone https://github.com/xpressengine/xpressengine.git - cd xpressengine - composer install
  • 28. XE3 Image 만들기 XE3 & XEHub [xe download 이미지 생성하기] [XE3:0.3 image commit, push]
  • 29. [container에서 사용중인 포트 조회] XE3 Image 만들기 XE3 & XEHub [image에 apache 설치하기] docker run -p : 로컬 컴퓨터의 포트와 container의 포트를 연결 ctrl + pq
  • 30. XE3 Image 만들기 XE3 & XEHub [image에 apache 설치하기] - apt-get install apache2 -y - cd /etc/apache2/sites-available/ - vi xe.conf <VirtualHost *:80> ServerName yourdomain.tld ServerAdmin webmaster@localhost DocumentRoot /var/www/xpressengine <Directory /var/www/xpressengine> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> - a2dissite 000-default.conf - a2ensite xe.conf - a2enmod rewrite - chgrp -R www-data /var/www/xpressengine - chmod -R 775 /var/www/xpressengine - service apache2 restart [xe.conf 파일 내용]
  • 31. XE3 Image 만들기 XE3 & XEHub [image에 apache 설치하기] [127.0.0.1로 접속 했을 때 XE3 설치 페이지가 출력]
  • 32. XE3 Image 만들기 XE3 & XEHub [image에 apache 설치하기]
  • 33. XE3 Image 만들기 XE3 & XEHub [xe container와 mysql container 연결] -d : deattach mode로 실행 -e : 환경변수를 설정 [mysql container가 실행 중]
  • 34. - 실행중인 container에 command를 실행 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] [-e MYSQL_DATABASE로 XE3 Image 만들기 XE3 & XEHub [xe container와 mysql container 연결] 지정한 테이블이 생성]
  • 35. - service apache2 start XE3 Image 만들기 XE3 & XEHub [ubuntu Image 생성하고 php install] —link : 다른 container와의 연결을 추가 - 127.0.0.1 접속 후 xe 설치 - Database Host는 mysql container의 이름
  • 37. - 설치해야 하는 패키지, 실행해야 되는 명령어 등을 작성하는 파일 Dockerfile? Dockerfile로 XE3 이미지 만들기 XE3 & XEHub - 작성된 내용으로 build해서 image 생성 - build된 이미지의 구성 요소를 확인 가능
  • 38. Dockerfile로 XE3 이미지 만들기 XE3 & XEHub <VirtualHost *:80> ServerName yourdomain.tld ServerAdmin webmaster@localhost DocumentRoot /var/www/xpressengine <Directory /var/www/xpressengine> AllowOverride All </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> [xe.conf 파일 내용]
  • 39. FROM : 생성할 image의 base image Dockerfile로 XE3 이미지 만들기 XE3 & XEHub FROM ubuntu:latest LABEL "maintainer"="sirwoongke" ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update RUN apt-get install php php-fpm php-mbstring php-dom php-zip php-pdo php-tokenizer php-xml php-ctype php-json php-mysql php-curl php-gd php-cgi php- cli -y RUN apt-get install curl git apache2 -y RUN curl -sS https://getcomposer.org/installer | php RUN mv composer.phar /usr/local/bin/composer WORKDIR /var/www RUN git clone https://github.com/xpressengine/xpressengine.git WORKDIR /var/www/xpressengine RUN composer install RUN chgrp -R www-data /var/www/xpressengine RUN chmod -R 775 /var/www/xpressengine ADD xe.conf /etc/apache2/sites-available RUN a2dissite 000-default.conf RUN a2ensite xe.conf RUN a2enmod rewrite RUN service apache2 restart CMD apachectl -DFOREGROUND LABEL : image의 meta-data ENV : Dockerfile에서 사용할 환경변수 지정 RUN : build 과정 중 container 내부에서 실행할 명령 ENV : Dockerfile에서 사용할 환경변수 지정 WORKDIR : 명령어를 실행할 디렉터리를 지정 RUN 명령어로 cd를 할 경우 다음 실행할 명령어 실행 전에 root 디렉터리로 이동하기 때문에 디렉터리 이동은 WORKDIR 명령어를 사용 ADD : 로컬에 있는 파일을 지정한 image의 경로에 추가 CMD : container가 시작될 때 실행한 명령어 docker run에서 받는 command로 무시 될 수 있음
  • 40. [Dockerfile build] Dockerfile로 XE3 이미지 만들기 XE3 & XEHub - Dockerfile을 image로 build docker build [OPTIONS] PATH | URL | - -t : image의 tag를 지정
  • 41. [github repository 생성] [Automated Build 설정] Dockerfile로 XE3 이미지 만들기 XE3 & XEHub
  • 42. - 추가한 repository를 선택 [Automated Build 설정] Dockerfile로 XE3 이미지 만들기 XE3 & XEHub - 간단한 설명 작성 및 설정 후 생성
  • 43. [생성된 Automated Build Repository] [Automated Build 설정] Dockerfile로 XE3 이미지 만들기 XE3 & XEHub [작성한 Dockerfile을 github에 push]
  • 44. [Automated Build 설정] Dockerfile로 XE3 이미지 만들기 XE3 & XEHub - 연동된 repository에 Dockerfile이 push 되면 자동으로 build 시작
  • 46. docker-compose로 XE3 바로 사용하기 XE3 & XEHub - 여러 개의 container를 사용해서 애플리케이션을 실행 할 때 하나의 서비스로 정의해서 관리 docker-compose? - docker-compose.yml 작성된 설정 내용으로 container를 생성
  • 47. docker-compose로 XE3 바로 사용하기 XE3 & XEHub version: '3.0' services: xe: image: sirwoongke/xe3:0.4 ports: - "80:80" links: - xe_db:db command: apachectl -DFOREGROUND xe_db: image: mysql:5.7 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=xe [docker-compose.yml] version : yml 파일 포맷의 버전 services : 생성될 container의 목록 작성 xe, xe_db : 생성될 container의 이름 [XE3 Image를 사용]
  • 48. docker-compose로 XE3 바로 사용하기 XE3 & XEHub version: '3.0' services: xe: build: context: . dockerfile: ./Dockerfile image: xe_build_image links: - xe_db ports: - "80:80" xe_db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=xe [docker-compose.yml] build : Dockerfile에 관련된 정보를 작성 context : Dockerfile이 존재 하는 경로 작성 dockerfile : Dockerfile의 이름 [XE3 Dockerfile을 사용]
  • 49. - docker-compose.yml에 작성된 내용으로 container를 생성 docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose로 XE3 바로 사용하기 XE3 & XEHub
  • 50. docker-compose로 XE3 바로 사용하기 XE3 & XEHub - docker-compose로 실행된 container의 목록 출력 docker-compose ps [options] [SERVICE...]
  • 51. - docker-compose up으로 생성된 container를 종료하게 삭제 docker-compose down [options] docker-compose로 XE3 바로 사용하기 XE3 & XEHub
  • 52. 부록 A. 개발환경과 source code 분리하기
  • 53. - 앞서 작성한 image나 Dockerfile을 사용하면 container가 종료 되면서 database의 data가 손실되고 source code를 수정 하기가 불편하다는 문제가 있음 XE3 & XEHub 개발 환경과 source code 분리하기 - 개발에 필요한 php, apache, composer 등 인프라 부분은 container를 활용하고 source code는 host에서 작업하는 분리가 필요 - 개발 환경 공유는 개발 환경에 대한 설정을 작성한 image나 Dockerfile을 공유해서 개발 환경을 공유 - database의 손실은 database data의 저장을 local에 저장 해서 database container가 다시 시작 되더라도 기존에 저장된 database data를 사용하도록 설정
  • 54. - php, apache가 설치된 image 생성 xpressengine : source code가 저장된 폴더 XE3 & XEHub 개발 환경과 source code 분리하기 database : database의 data가 저장될 폴더
  • 55. -v : 호스트와 volume을 공유 XE3 & XEHub 개발 환경과 source code 분리하기 [database data local에 저장] : 명령어 줄바꿈
  • 56. XE3 & XEHub 개발 환경과 source code 분리하기 [개발 환경이 설정된 container와 source code 연결]
  • 57. XE3 & XEHub 개발 환경과 source code 분리하기
  • 58. XE3 & XEHub 개발 환경과 source code 분리하기 version: '3.0' services: server: image: volume_test:1.1 ports: - "80:80" links: - xe_db:db volumes: - /Users/sirwoongke/source/docker/appendix/xpressengine:/var/www/xpressengine command: apachectl -DFOREGROUND xe_db: image: mysql:5.7 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=xe volumes: - /Users/sirwoongke/source/docker/appendix/database:/var/lib/mysql [docker-compose.yml] [docker-compose로 volume 연결]
  • 59. XE3 & XEHub 개발 환경과 source code 분리하기
  • 60. Q & A