IT

Docker 명령어 - Container 실행, 띄우기

eulBlue 2024. 3. 29. 11:45

이번에 도커를 사용해서 뭘 해본다고 하길래 .. 중요한게 아니라면

먼저 이것저것 해봐도 돼냐 .. 라고 여쭤보니까 이번주 안으로 해줬으면 좋겠다는 농담 반 진담 반과 함께 진행하였다.

진짜 아무런 기초지식도 없이 시작해서 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 설정에 따라서

도커 컨테이너를 실행시킬 수 있다.