기록하는삶

[Docker/도커] 도커 설치, 기본 명령어, quasar 활용 docker build, docker hub, push와 pull 예제(nextcloud) 본문

AI/개발환경

[Docker/도커] 도커 설치, 기본 명령어, quasar 활용 docker build, docker hub, push와 pull 예제(nextcloud)

mingchin 2021. 10. 28. 11:38
728x90
반응형

도커(Docker)는 어플리케이션의 가상화(컨테이너화)를 통해 개발 환경에 관계 없이 도커만 설치한다면 어플리케이션을 동일하게 실행할 수 있도록 하는 장점이 있는 도구다. 리눅스 기반으로 개발되었지만 현재는 window와 mac에서도 모두 사용 가능하다고 한다. Windows 10 Pro 기준 설치 방법은 아래 글과 같고, 다른 os의 설치 방법 또한 아래 글에 링크로 포함되어 있다.

[설치]

https://www.lainyzine.com/ko/article/a-complete-guide-to-how-to-install-docker-desktop-on-windows-10/

 

[Windows 10] Docker 설치 완벽 가이드(Home 포함)

Docker는 경량 가상화 기술인 리눅스 컨테이너 도구입니다. Windows 10 Home과 Pro에서도 몇 가지 설정을 통해 Docker Desktop으로 리눅스 컨테이너를 사용할 수 있습니다. 이 글에서는 Windows 10에서 Docker Des

www.lainyzine.com

 

[quasar 활용 예제]

① quasar로 배포용 파일 만들기

node.js prompt에서 quasar 어플리케이션의 working directory로 이동한 뒤, 'quasar build'을 실행한다.

// dist 폴더 생성하기
$ quasar build

그러면 위와 같이 dist 폴더가 생성되며, 그 안에 배포에 필요한 파일들이 변환되어 생성 및 저장된다. 해당 예시의 경우 single page application에 해당에 자동으로 spa 폴더 아래에 생성되었다.

 

② dockerfile 생성하기

quasar에서 docker build를 실행하기 위해, dockerfile이 필요하다. working directory 아래 pakage.json파일과 동일한 레벨에, dockerfile을 생성한 뒤 아래와 같이 입력한다.

FROM nginx:stable-alpine

COPY dist/spa/ /usr/share/nginx/html/

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

해당 예시는 nginx 엔진을 사용하고, dist/spa 폴더 하위의 파일들을 사용하며, 포트 80을 이용한다.

 

③ docker 이미지 생성하기

docker에서는 저장하는 프로젝트의 단위를 이미지라 부른다. node.js prompt에서 동일한 위치로 이동한 뒤, 다음 명령어를 실행하면 입력한 이름으로 이미지가 생성된다.

// docker build -t '유저 아이디'/'이미지명':'태그(버전)' .

docker build -t '유저 아이디'/ai-project:0.1 .

주의할 것이 있다면 유저 아이디에 docker hub와 다른 아이디를 입력할 경우, docker hub에 push가 되지 않을 수 있다는 점이다. 미리 docker hub에 가입한 뒤 해당 아이디를 사용하는 것이 좋다.

> docker hub 가입: https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

 

④ 생성한 이미지 container로 실행하기

생성한 이미지를 실행해야만 해당 어플리케이션에 접속할 수 있다. 실행시 명령어에서 원하는 port 번호를 지정할 수 있다. 내부적으로는 아까 ②에서 지정한 80번 포트를 사용하고, 외부에서 사용자가 활용할 포트는 명령어에서 지정할 수 있다. 아래의 코드를 실행하면 된다.

// docker run -d --name 컨테이너명 -p 외부포트:내부포트 '유저 아이디'/이미지명:태그

docker run -d --name tuna-ai -p 18080:80 '유저 아이디'/ai-project:0.1

위 코드는 tuna-ai라는 이름의 port 18080으로 접속 가능한 container를 ai-porject:0.1 이미지를 기반으로 실행한다.

 

※ 이미지, 컨테이너 관련 기본 명령어

이미지와 컨테이너를 확인하고 삭제하는 기본 명령어는 아래와 같다.

// 생성한 이미지 목록 확인
docker images

// 실행 중인 container 확인
docker ps

// 생성한 모든 container 확인(실행중이 아닌 것까지)
docker ps -a

// 실행중인 container 중단
docker stop 컨테이너명

// 생성했던 container 삭제
docker rm 컨테이너명

docker images / docker ps 사용 예시

dokcer stop 사용 예시

⑤ docker hub 활용하기

아래의 단계를 거치면 docker hub에 등록하고, 등록되어 있는 이미지를 받아 활용할 수 있다.

// 로그인 id/password 입력
docker login

// docker push '유저 아이디'/'이미지명':'태그' -> docker hub에 등록
docker push '유저 아이디'/ai-project:0.1

// docker pull '유저 아이디'/'이미지명':'태그' -> 등록된 이미지 받아오기
docker pull '유저 아이디'/ai-project:0.1

docker hub에서 nextcloud라는 서비스를 받아 활용해보면 아래와 같다.

https://hub.docker.com/_/nextcloud

 

Nextcloud - Official Image | Docker Hub

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

아래의 주소처럼 docker hub에서 원하는 이미지를 찾으면, 해당 이미지를 pull 할 수 있는 코드가 존재한다.

태그가 별도로 존재하지 않는 것은 기본적으로 'latest'라는 태그를 사용하기 때문이다.

// next cloud 이미지 받아오기
docker pull nextcloud

// 받아온 이미지 실행하기
docker run -d -p 28080:80 nextcloud

docker images와 docker ps로 확인해보면 정상적으로 이미지가 생성되고 container가 실행된 것을 확인할 수 있다.

이제 http://localhost:28080/ 주소로 들어가보면, 정상적으로 실행됨을 확인할 수 있다.

 

728x90
반응형