# Docker 명령어

#### docker 명령어

* 실행중인 도커 컨테이너의 리스트를 보는 명령어

  `docker ps`
* 컨테이너 생성 및 실행

  `docker-compose up`

docker-compose.yml

```bash
version: '3' # 버전 지정
services: # 컨테이너 설정
  db:
    image: mysql:latest # 컨테이너에서 사용하는 base image 지정
    container_name: inplace-mysql # 컨테이너명 설정
    restart: always # 컨테이너 다운 시 재시작하라는 명령어
    ports: # 접근 포트 설정 (컨테이너 외부:컨테이너 내부), -p 옵션과 동일
      - '3306:3306'
    environment: # 컨테이너 안의 환경변수 설정
      MYSQL_ROOT_PASSWORD: '${MYSQL_ROOT_PASSWORD}'
      MYSQL_DATABASE: '${MYSQL_DATABASE}'
      MYSQL_HOST_AUTH_METHOD: 'trust'
    volumes: # 볼륨 설정
      # - ./data:/var/lib/mysql/data
      - ./data/mysql/:/var/lib/mysql
```

| 항목                        | 설명                                                                                                         |
| ------------------------- | ---------------------------------------------------------------------------------------------------------- |
| version                   | Docker Compose 파일의 버전을 나타냅니다. 현재는 '3'이 최신 버전입니다.                                                           |
| services                  | 서비스 섹션에는 컨테이너를 정의하는 데 필요한 정보가 포함됩니다.                                                                       |
| db                        | 서비스의 이름입니다. 이 이름을 사용하여 컨테이너를 참조할 수 있습니다.                                                                   |
| image                     | 사용할 Docker 이미지의 이름과 태그를 나타냅니다. 이 경우, 'mysql:latest' 이미지가 사용됩니다.                                            |
| container\_name           | 컨테이너의 이름을 설정합니다. 'inplace-mysql'이라는 이름으로 컨테이너를 생성합니다.                                                      |
| restart                   | 컨테이너가 비정상적으로 종료되었을 때 자동으로 재시작할지 여부를 나타냅니다. 이 경우, 항상 자동으로 재시작됩니다.                                           |
| ports                     | 컨테이너 내부의 포트와 호스트의 포트 간의 매핑을 설정합니다. 이 경우, 3306번 포트를 호스트의 3306번 포트로 매핑합니다.                                   |
| environment               | 컨테이너 내부에서 사용할 환경 변수를 설정합니다. MYSQL\_ROOT\_PASSWORD, MYSQL\_DATABASE, MYSQL\_HOST\_AUTH\_METHOD 변수가 설정됩니다.   |
| MYSQL\_ROOT\_PASSWORD     | MySQL root 사용자의 비밀번호를 설정합니다. 환경 변수로 설정되어 있으므로 컨테이너 내부에서 접근할 수 있습니다.                                        |
| MYSQL\_DATABASE           | MySQL 데이터베이스의 이름을 설정합니다. 환경 변수로 설정되어 있으므로 컨테이너 내부에서 접근할 수 있습니다.                                            |
| MYSQL\_HOST\_AUTH\_METHOD | MySQL 호스트 인증 방법을 설정합니다. 'trust'로 설정되어 있으므로, 모든 호스트에서 컨테이너에 접근할 수 있습니다.                                     |
| volumes                   | 호스트와 컨테이너 간 파일을 공유하기 위한 볼륨 매핑을 설정합니다. 이 경우, 호스트의 './data/mysql/' 디렉토리와 컨테이너의 '/var/lib/mysql' 디렉토리를 매핑합니다. |
