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연결
15. docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
XE3 Image 만들기
XE3 & XEHub
[php가 설치된 container image로 만들기]
- container를 image로 생성
-m : 변경 내역을 메시지를 저장
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를 지정
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
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 연결]