본문 바로가기

잡부생활/Docker

Windows 10 Local 환경에서 도커(docker) 개발 환경 구성하기

예전 Local 환경에서 docker를 잠시 공부할 때 구성해놨는데, 윈도우가 맛이 가서 Hyper-V가 정상 동작하지 않았다. 그래서 이번 기회에 PC 포맷도 하고 도커 환경을 다시 구성하며 블로깅 한다.

 

주요 명령어도 한 번 훑어보고, 또한 VSCode를 통해 Web App도 한 번 띄워보자.

 

도커는 많은 이유에서 사용된다. 내 경우에는 사내에서 개발 한 프로젝트의 OS 환경이 바뀌어 이관해야 하는데, 각종 라이브러리 문제 등 너무 힘들었다. 개빢...

 

그래서 애초에 Local 윈도우 10 환경에서 도커 환경을 구성해보고 개발해야겠다는 생각이 들었다.

(참고로 본인은 개발자는 아니고 뉴비 잡부)

 

먼저 도커 설치는 매우 간단하기 때문에 구글링을 통해 미리 설치하길 바란다.

아래 설명이 잘 되어 있는 링크를 첨부한다.

 

[docker]도커 처음 사용자를 위한 윈도우 도커 설치 및 실행하기 — Steemit

윈도우에서 도커 설치는 두 가지 버전으로 나뉩니다. Windows 10 Home 버전 이하에서 설치하는 방법과 Windows 10 Pro 또는 Windows 10 Enterprise 버전, Windows… by mystarlight

steemit.com

 

[도커 버전]

도커를 설치했으면, Windows PowerShell에서 도커 정보를 확인한다.

PS D:\docker-test> docker -v
Docker version 19.03.4, build 9013bf5

 

[도커 이미지 리스팅]

당연히 현재 도커 이미지는 존재하지 않는다.

PS D:\docker-test> docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

[도커 이미지 생성]

간단한 hello-world 이미지를 생성해보자.

PS D:\docker-test> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete                                                                                             Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

 

그리고 도커 이미지를 확인해보면 아래와 같이 hello-world 이미지가 생성된 것을 알 수 있다.

PS D:\docker-test> docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        10 months ago       1.84kB

 

[도커 이미지 상세 정보 확인]

생성한 도커 이미지의 상세 정보 확인하자.

PS D:\docker-test> docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              fce289e99eb9        10 months ago       1.84kB

 

[도커 컨테이너 삭제]

도커 이미지를 삭제하기 위해서는 먼저 도커 컨테이너부터 삭제한다.

PS D:\docker-test> docker container rm jovial_cori
jovial_cori

 

[도커 이미지 삭제]

PS D:\docker-test> docker rmi hello-world:latest
Untagged: hello-world:latest
Untagged: hello-world@sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
Deleted: sha256:af0b15c8625bb1938f1d7b17081031f649fd14e6b233688eea3c5483994a66a3

그럼 아래와 같이 생성한 hello-world의 도커 이미지가 삭제된 것을 알 수 있다.

PS D:\docker-test> docker image ls -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

[docker-compose.yml 생성]

아래와 같이 docker-compose.yml 파일을 생성해준다.

volumes의 경우 로컬 경로 ./php -> 도커 컨테이너 경로 /var/www/html/ 로 바인딩.

ports의 경우 로컬 포트 8000 -> 도커 컨테이너 80 포트로 바인딩.

version: '3.3'
services:
 web:
  image: php:7.3-apache
  container_name: php73
  volumes:
   - ./php:/var/www/html/
  ports:
   - 8000:80 

docker-compose.yml

 

 

그럼 아래와 같이 docker-compose.yml을 통해 PHP 7.3 도커 이미지를 다운로드 받는다.

 

만약 아래와 같은 에러 문구가 나타난다면, Windows의 드라이브가 Docker 엔진과 공유되지 않아 발생되는 문제다.

ERROR: for php73  Cannot create container for service web: b'Drive has not been shared' 

docker Settings ->  Shared Drives에서 드라이브 공유 설정을 하자.

Docker Shared Drives

 

아래 그림과 같이 PHP 도커 이미지가 실행된 것을 볼 수 있다.

docker-compose up

실제로 브라우저의 로컬 IP와 바인딩 한 8000 포트로 들어가면 PHP Apache로 접속된 것을 알 수 있다. 그러나 정상적인 화면은 뜨지 않는다. 

도커 컨테이너 접속

 

아직 로컬 Path php 경로에 파일이 없으니 추가해주자.

<?php
	echo "Hello Docker World in Windows 10";
?>

 

PHP 코드를 추가하고 브라우저로 접속하면 정상적인 index.php 화면을 확인할 수 있다.

 

이상 Windows 10에서 간단한 docker-compose를 이용하여 실제로 도커 컨테이너를 띄워보고 PHP Apache를 실행해봤다.

태그