이번에 도커를 사용해서 뭘 해본다고 하길래 .. 중요한게 아니라면
먼저 이것저것 해봐도 돼냐 .. 라고 여쭤보니까 이번주 안으로 해줬으면 좋겠다는 농담 반 진담 반과 함께 진행하였다.
진짜 아무런 기초지식도 없이 시작해서 4일동안 개고생을 했는데 ..
누군가에게는 도움이 됐으면 하는마음과 간단한 히스토리를 남기려고 한다.
Window 에서 진행했고 Docker Desktop 을 설치해서 GUI 로 확인하긴 했지만 큰 도움이 됐는지는 미지수
PowerShell 에서 진행하였다.
docker run hello-world
기본적으로 run 이란 명령어는 Docker 이미지로부터 새로운 컨테이너를 생성하고 실행하라는 명령이다.
해당 명령어를 실행시키면 임의의 포트로 개방돼서 로컬환경에서 확인해볼 수 있다.
docker ps
docker-compose ps
해당 명령어는 현재 실행중인 컨테이너의 모습을 확인할 수 있다.
아무것도 실행하고 있지 않다면 아무 목록이 뜨지 않을거지만
아까 실행중인 컨테이너가 있다면 목록이 보이게 된다.
사실 둘다 컨테이너 목록을 확인하는 명령어지만 docker-compose ps 는 정의된
멀티 컨테이너 어플리케이션의 컨테이너 상태를 확인할 수 있다.
docker images
해당 명령어를 사용하면 현재 저장되어있는 이미지들의 목록을 확인 할 수 있다.
docker exec -it /bin/bash
docker ps 를 통해서 특정 컨테이너의 쉘에 접속해서 처리해야하는 일이 있다면 사용하게 될 것이다.
docker run -d --name <컨테이너 이름> -e NODE_ENV=development -e url=<주소> -p <포트> -v <볼륨위치>
아까 hello-wrold 의 심화버전 느낌인데
-d 는 백그라운드에서 돌아갈 수 있도록 하는 설정이다.
--name 은 컨테이너 이름을 설정한다.
-e NODE_ENV 는 환경변수를 설정한다. 여기서는 개발버전으로 설정하였다.
-p 는 포트 번호를 매핑한다. 나는 8080:8081 를 사용하였다.
-v 는 호스트와 컨테이너 간의 볼륨(데이터 저장 공간)을 마운트한다.
run 으로 컨테이너를 띄울 수 있지만 run 으로 docker 를 실행하면 약간 일회성 느낌으로 실행하게 된다.
여러가지 설정들을 해줄 수 있지만 ( -e, -p, -v, --name, -d ... ) 이걸 매번 타이핑 할 수도 없는 노릇이고 이런 문제점을
해결하기 위해서 yml 파일을 작성해놓고 컨테이너를 실행시키는 방법이있다.
docker.yml
version: '3.3'
services:
ghost:
image: ...
restart: always
ports:
- ...
environment:
url: ...
database__client: ...
database__connection__host: ...
database__connection__user: ...
database__connection__password: ...
database__connection__database: ...
volumes:
- ...
db:
image: ...
restart: always
environment:
MYSQL_ROOT_PASSWORD: ...
MYSQL_DATABASE: ...
MYSQL_USER: ...
MYSQL_PASSWORD: ...
volumes:
- ...
ports:
- ...
nginx:
image: ...
restart: always
volumes:
- ...
ports:
- ...
depends_on:
- ...
volumes:
ghost-content:
db-data:
이런식으로 필요한 정보들을 저장해놓고 docker-compose up -d 를 실행시키면 해당 yml 설정에 따라서
도커 컨테이너를 실행시킬 수 있다.
'IT' 카테고리의 다른 글
[Python] .toml 종속성 설치 (1) | 2024.03.29 |
---|---|
Putty, Liunx 명령어 (2) | 2024.03.29 |
웹스톰, 인텔리제이 - 실행 취소, 복구 단축키 (0) | 2024.03.28 |
깊은 복사(deep copy) vs 얕은 복사(shallow copy) (0) | 2024.02.21 |
[IT] Web 페이지 로딩 하는 과정 (0) | 2023.12.19 |