Docker 세계에서 데이터베이스를 사용하는 방법

Docker 컨테이너를 사용하여 DB 엔진을 설치하지 않고도 시스템에서 로컬로 DB 엔진을 실행할 수 있습니다.

💡 컨테이너의 데이터는 컨테이너 자체와 함께 제거되므로 시간이 지남에 따라 DB 데이터를 특정 Docker volume ( --volume )에 저장할 것입니다.

몽고DB



다음과 같은 간단한 명령으로 MongoDB 인스턴스를 시작할 수 있습니다.

docker run --detach --name mongo \
  --publish 27017:27017 \
  --volume mongo:/data/db \
  mongo


이렇게 하면 mongod 프로세스를 실행하고 기본 MongoDB 포트27017에서 수신 대기하는 Docker 컨테이너가 시작됩니다. 기본적으로 MongoDB는 test 데이터베이스를 사용하고 인증 없이 localhost의 연결만 허용합니다.

Docker 실행 명령


docker run 인수를 설명하겠습니다.
  • --detach 서비스처럼 백그라운드에서 컨테이너를 실행합니다.
  • --name는 생성된 컨테이너에 특정 이름을 할당합니다.
  • --publishlocalhost의 특정 포트를 지정된 컨테이너로 전달합니다.
  • --volume 볼륨을 생성하거나 재사용하고 지정된 경로에서 지정된 컨테이너에 연결합니다.

  • 기본적으로 MongoDB는 /data/db 디렉토리를 사용하여 데이터베이스를 저장합니다(해당 경로에 Docker 볼륨을 마운트해야 함).

    MongoDB 루트 사용자



    컨테이너에 다음 환경 변수를 추가하여 DB에 사용자root를 지정할 수 있습니다.

    docker run --detach --name mongo \
      --env MONGO_INITDB_ROOT_USERNAME=mongoadmin \
      --env MONGO_INITDB_ROOT_PASSWORD=secret \
      --publish 27017:27017 \
      --volume mongo:/data/db \
      mongo
    


    더 많은 변수는 Docker hubmongo 이미지 페이지를 확인하십시오.

    몽고DB 셸 사용



    동일한 컨테이너에서 mongosh 명령을 사용하여 터미널을 통해 DB에 연결할 수 있습니다.

    docker exec -it mongo mongosh
    


    해당 값이 필요한 경우 --username--password를 사용하십시오.

    엔진을 업데이트하는 방법



    이전에 Docker 볼륨에 DB 데이터를 저장한 경우 DB 인스턴스를 쉽게 업데이트할 수 있습니다‼️ 이것은 중요합니다. 그렇지 않으면 데이터가 손실됩니다.

  • 최신 MongoDB 이미지 가져오기

    docker pull mongo
    


  • 먼저 Docker 컨테이너를 중지하고 제거하십시오.

    docker stop mongo
    docker rm mongo
    


  • 주어진 동일한 인수로 컨테이너를 다시 만들고 --env 변수를 포함해야 합니다(이 경우에는 MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD 만).

    docker run --detach --name mongo \
      --publish 27017:27017 \
      --volume mongo:/data/db \
      mongo
    


  • 끝났다! 이제 데이터베이스가 최신 상태입니다. 🙌

    PostgreSQL



    Postgres의 경우 루트 사용자 암호를 설정해야 합니다.

    docker run --detach --name pg \
      --env POSTGRES_PASSWORD=secret \
      --volume pgdata:/var/lib/postgresql/data \
      --publish 5432:5432 \
      postgres
    


    기본적으로 사용자 이름은 postgres이지만 POSTGRES_USER 변수를 사용하여 해당 값을 재정의할 수 있습니다.

    더 많은 변수는 Docker Hub 페이지를 확인하십시오.

    터미널을 통해 연결



    컴퓨터에 클라이언트를 설치하는 대신 올바른 사용자 이름으로 동일한 컨테이너를 사용하여 터미널을 통해 연결할 수 있습니다.

    docker exec -it pg psql --username=postgres
    


    동일한 호스트에서 연결하는 데 비밀번호가 필요하지 않습니다.

    MySQL



    MySQL은 다음과 같은 Postgres 규칙을 따릅니다.

    docker run --detach --name mysql \
      --env MYSQL_ROOT_PASSWORD=secret \
      --volume mysql:/var/lib/mysql \
      --publish 3306:3306 \
      mysql
    


    자세한 내용은 Docker hub 을 참조하십시오.

    터미널을 통해 연결




    docker exec -it mysql mysql -p
    


    클라이언트는 루트 암호를 묻는 메시지를 표시합니다.

    마이크로소프트 SQL 서버



    Microsoft는 사용하려는 SQL Server에 대한 라이선스가 있음을 선언해야 합니다ACCEPT_EULA=Y. 🙄

    docker run --name mssql \
      --env ACCEPT_EULA=Y \
      --env 'SA_PASSWORD=yourStrong(!)Password' \
      --volume mssql:/var/opt/mssql \
      --publish 1433:1433 \
      mcr.microsoft.com/mssql/server
    


    또한 SA 암호는 다른 엔진보다 더 강력한 제약 조건을 가지고 있습니다.

    SQL 서버 버전



    기본적으로 Developer 버전은 이 Docker 이미지에서 사용하는 SQL Server 버전입니다. SQL Express 에디션이 필요한 경우 MSSQL_PID=Express 를 사용해야 합니다.

    docker run --name mssql \
      --env ACCEPT_EULA=Y \
      --env MSSQL_PID=Express \
      --env 'SA_PASSWORD=yourStrong(!)Password' \
      --volume mssql:/var/opt/mssql \
      --publish 1433:1433 \
      mcr.microsoft.com/mssql/server
    


    Docker hub에서 SQL 서버 버전에 대한 자세한 내용을 참조하십시오.

    터미널을 통해 연결


    sqlcmd 명령은 PATH에 없으므로 절대 경로를 사용하여 컨테이너 내에서 실행해야 합니다.

    docker exec -it mssql /opt/mssql-tools/bin/sqlcmd -U sa -P 'yourStrong(!)Password'
    


    결론



    이제 데이터를 저장하는 볼륨을 사용하여 Docker 컨테이너를 사용하여 MongoDB 및 일부 SQL 엔진을 처리하는 방법을 알고 있습니다.

    컨테이너 자체를 사용하여 데이터베이스 터미널에 연결할 수 있으며 데이터 손실을 방지하기 위해 Docker 볼륨을 사용해야 합니다.

    좋은 웹페이지 즐겨찾기