Docker 세계에서 데이터베이스를 사용하는 방법
💡 컨테이너의 데이터는 컨테이너 자체와 함께 제거되므로 시간이 지남에 따라 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
는 생성된 컨테이너에 특정 이름을 할당합니다. --publish
는 localhost
의 특정 포트를 지정된 컨테이너로 전달합니다. --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 hub의
mongo
이미지 페이지를 확인하십시오.몽고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_USERNAME
및 MONGO_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 볼륨을 사용해야 합니다.
Reference
이 문제에 관하여(Docker 세계에서 데이터베이스를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/cloudx/how-to-use-databases-in-the-docker-world-4icp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)