Docker
도커란 컨테이너화 기술을 통해 애플리케이션을 패키징하여 사용하는 데
이 컨테이너 방식은 애플리케이션과 의존성을 함께 패키징함과 동시에 기존에 가상 머신을 사용하여 사용자 환경을 나누는 것과 비교하면 훨씬 가볍고 빠르게 구현으로 사용자 환경을 나눌 수 있습니다.
아래 이미지를 보면 왼쪽은 가상머신을 사용할 때의 상황을 가식화한거고
오른쪽 이미지는 컨테이너를 사용하는 방식입니다.
가상머신은 Guest OS까지 띄우고 진행해야 한다는 점에서 도커보다 무겁고 느릴 수밖에 없습니다.
Docker Desktop 다운로드
Desktop에서 Docker를 관리하기 용이하게 해주는 Docker Desktop을 다운해줍시다.
https://www.docker.com/products/docker-desktop/
위 페이지에서 Download for Windos를 받아줍시다.
다음처럼 다운로드를 하고
이제 설치가 완료되면 재부팅이 되고 아래 창이 나오면 성공
이제 로그인 정보를 입력하시고 아래 화면까지 오면 성공입니다.
docker-compose.yml 파일 설정
이제 작업을 할 폴더에서 아래 yml 파일을 만들어줍시다.
속성 별 담당하는 기능입니다.
- version : docker-compse.yml 파일의 버전을 지정함
- services : 서비스(컨테이너)의 목록을 지정하고, 서비스는 각각 별도의 컨테이너로 실행함
- image : image로 해당 컨테이너에 넣을 패키지와 버전을 선택할 수 있음
- ports : 호스트의 IP 컨테이너의 IP를 매핑을 정
- volumes : 해당 폴더와 컨테이너 내부 폴더를 마운트 처리하여 이를 통해 컨테이너와 호스트 간에 데이터 동기화를 가능케 해 줌
- depends_on : 다른 컨테이너와의 관계를 지정하는 걸로 컨테이너가 생성되는 순서를 지정 가능
- command : 컨테이너가 시작될 때 명령을 지정하는데 이걸로 컨테이너의 기본 명령을 업데이트 가능
- environment : 컨테이너에서 사용할 변수를 정의하여 컨테이너에 설정에 정보를 전달할 수 있다
docker-compse.yml
version: '3.9'
services:
web:
build:
context: .
dockerfile: Dockerfile
depends_on:
- db
volumes:
- ./html:/var/www/html/
ports:
- 5000:80
db:
container_name: mysql
image: mysql:latest
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
volumes:
- ./mysql/init:/docker-entrypoint-initdb.d
저는 호스트(로컬)에서의 포트 충돌을 피하기 위해 apache는 5000으로 매핑했습니다.
각자 로컬 환경에 맞춰 포트를 조절을 하시면 됩니다.
Dockerfile
FROM php:7.2-apache
RUN docker-php-ext-install mysqli
EXPOSE 80
저는 필요한 PHP 버전이 7.2이기에 지정을 했습니다, 필요한 경우 바꾸시면 됩니다.
Docker 실행해 보기
docker-compose.yml를 설정한 폴더로 가서 아래 명령어를 통해 빌드 후 백그라운드로 실행할 수 있습니다.
※ 종료시는 ctrl + c로 할 수 있습니다.
docker-compose up --build
docker-compose up -d
실행 후 docker desktop에 아래와 같은 image들이 추가된 걸 볼 수 있습니다.
이미지들은 나중에 다시 컨테이너에 필요할 경우 재활용되어 사용됩니다.
이미지 이름이 docker-test-apm-web인 이유는 Dockerfile로 빌드를 진행했기 때문입니다.
컨테이너도 다음처럼 생긴 걸 볼 수 있습니다.
다음처럼 폴더가 생길 것입니다.
이제 html/index.php을 다음 내용으로 추가합시다.
<?php
echo "Hello World";
?>
그리고 마지막으로 localhost:5000으로 접속하면 반가운 Hello World를 볼 수 있습니다.
'컴퓨팅 기술 > Docker' 카테고리의 다른 글
[Docker + Wordpress] php에서 mysql 연결 (0) | 2023.05.23 |
---|