스웜 클러스터없이 도커 비밀을 사용하는 방법은 무엇입니까?


29

현재 우리는 단일 도커 컨테이너에서 실행중인 응용 프로그램을 사용하고 있으며 응용 프로그램은 모든 종류의 민감한 데이터를 환경 변수로 전달해야합니다.

이미지를 실행 한 다음 저장소에 배치하지 않도록 실행 명령을 사용하지만 매우 안전하지 않은 실행 명령으로 끝납니다.

이제 도커 비밀이 존재한다는 것을 알고 있지만 클러스터를 배포하지 않고 어떻게 사용할 수 있습니까? 또는이 데이터를 보호하는 다른 방법이 있습니까?

친애하는,


답변:


6

당신은 할 수 없습니다 ... 그것은 Swarm없이 비밀을 지원하지 않습니다. 하나의 노드 만 사용하여``Swarm ''하지 않는 한.

다른 해결책은 다음과 같은 타사 볼트 소프트웨어를 사용하는 것입니다.

https://www.vaultproject.io/

그러나 Vault의 컨테이너에서 비밀을 사용하려면 문서를 읽어야합니다.

이것이 올바른 길로 인도하기를 바랍니다.


실제로 컨테이너를 만들 때 이러한 비밀을 주입해야하므로 실행중인 컨테이너 내부에서 "비밀"을 유지할 필요가 없으므로 호스트가 호출 할 때 비밀에 액세스하고 사용할 수있는 것이 합리적이라고 생각합니다. 도커 실행 명령, 나는 많은 대체 및 볼트 호출로 스크립트를 작성할 수 있다고 생각합니다.
Juan Sebastian

@ JuanSebastian 당신은 그 유스 케이스에 대한 Docker 'build-args'를 확인해야합니다.
user23390

내가 잘못 될 수도 있지만 로컬 ENV를 점점 양태에서는 빌드 인수 안에 무엇이 당신을 줄 것이다 @JuanSebastian .... 확실하지 .....
산출

build-args최종 이미지에는 포함되지 않지만 이미지 빌드 시간 동안에 만 액세스 할 수 있습니다. 적절한 해결책은 호스트의 파일에 비밀을 기록한 다음 (물론 적절한 권한으로) 도커 컨테이너에 볼륨 마운트하는 것입니다. 그런 다음 컨테이너 내부의 응용 프로그램은 해당 파일에서 비밀을 읽을 수 있습니다.
Brandon

22

, 작성 파일 을 사용하면 비밀을 사용할 수 있습니다 . (당신은 떼를 실행할 필요가 없습니다).

당신과 함께 작성 파일을 사용하여 고정 표시기-작성을 :이 문서는 고정 표시기-compose.yml 파일에서 "비밀"에 대한 .

비밀을 사용하고 싶기 때문에 docker-compose로 전환했습니다. 나는 더 행복해 보인다. 각 서비스는 컨테이너에 매핑됩니다. 그리고 대신 무리를 달리기로 전환하고 싶다면 기본적으로 이미 있습니다.

참고 : 비밀은 컨테이너 환경에로드되지 않으며 / run / secrets /에 마운트됩니다.

예를 들면 다음과 같습니다.

1) 프로젝트 구조 :

|
|---    docker-compose.yml
|---    super_duper_secret.txt

2) docker-compose.yml 내용 :

version: "3.6"

services:

  my_service:
    image: centos:7
    entrypoint: "cat /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./super_duper_secret.txt

3) super_duper_secret.txt 내용 :

Whatever you want to write for a secret really.

4) 컨테이너가 비밀에 액세스 할 수 있는지 확인하려면 프로젝트의 루트 에서이 명령을 실행하십시오 (Docker가 실행 중이고 docker-compose가 설치되어 있어야 함).

docker-compose up --build my_service

컨테이너가 비밀을 출력 한 것을 볼 수 있습니다.


docker-compose비밀 을 사용하는 실제 사례를 보여줄 수 있습니까 ? 문서와 구현에 대한 이해는 컨테이너에 비밀이 구성되지 않음을 나타냅니다.
BMitch

2
도커 비밀은 독립형 컨테이너가 아닌 서비스를 모으기 만 할 수 있습니다. 이 기능을 사용하려면 서비스로 실행되도록 컨테이너를 조정하십시오. 상태 저장 컨테이너는 일반적으로 컨테이너 코드를 변경하지 않고 스케일 1로 실행할 수 있습니다. 도커
Alwin Kesler

@BMitch 예를 추가했습니다. 그것이 당신을 돕는 희망! (I는 고정 표시기와 함께 일한 이후 잠시왔다 내 환경은 상당히 더 벌어지고있다 ...하지만 난이 일을해야한다고 생각 내가 뭔가를 놓친 경우 알려 주시기 바랍니다.!)
린지 - 요구 - 수면

웜이 없는 ( docker-compose.yml단일 노드) 서비스에서이를 복제 할 수 없습니다 . 컨테이너를 시작할 /run때만 포함하고로 표시 nginx.pid되지 않습니다 . Mountsdocker inspect $container
giorgiosironi

2
방금 독을 넣은 독창적 인 구성 요소에 이것을 추가 한 PR에 링크 할 것이라고 생각했습니다. github.com/docker/compose/pull/4368 실제로 거기에 있으며 코드에서 compose 파일의 최소 버전은 3.1이고 API는 1.13.0입니다. 코드는 여전히 현재 마스터 ( github.com/dnephin/compose/blob/… )에 있으므로 최대 버전을 기대하지 않습니다.
ssnobody
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.