Docker에서는 configs
와 secrets
를 사용하여 설정 데이터 및 민감한 정보를 관리할 수 있습니다. 이들은 Swarm 모드에서 사용되며, 일반적으로 docker-compose.yml
파일을 사용하여 구성됩니다.
Docker Configs
configs
는 설정 데이터를 관리하는 데 사용됩니다. 예를 들어, Nginx 설정 파일, Apache 설정 파일 등을configs
로 관리할 수 있습니다.docker config
명령을 사용하여 config를 만들고 관리할 수 있습니다.- Docker Swarm 모드에서만 사용 가능하며, 각 서비스에서 해당 설정을 사용할 수 있습니다.
예:
version: '3.8'
services:
web:
image: nginx:latest
configs:
- source: my_config
target: /etc/nginx/nginx.conf
mode: 0440
uid: "101"
gid: "101"
# Docker Config 생성
docker config create my_config /path/to/nginx.conf
# Docker 서비스 배포
docker stack deploy -c docker-compose.yml my_stack
Docker Secrets
secrets
는 민감한 정보를 안전하게 저장하고 관리하는 데 사용됩니다. 예를 들어, 데이터베이스 비밀번호, API 키 등을secrets
로 저장할 수 있습니다.docker secret
명령을 사용하여 secret을 만들고 관리할 수 있습니다.- Docker Swarm 모드에서만 사용 가능하며, 각 서비스에서 해당 비밀 정보를 사용할 수 있습니다.
예:
version: '3.8'
services:
db:
image: postgres:latest
environment:
POSTGRES_DB: my_database
POSTGRES_USER_FILE: /run/secrets/db_user
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_user
- db_password
secrets:
db_user:
external: true
db_password:
external: true
# Docker Secret 생성
echo "my_db_user" | docker secret create db_user -
echo "my_db_password" | docker secret create db_password -
# Docker 서비스 배포
docker stack deploy -c docker-compose.yml my_stack
위 예제에서 docker-compose.yml
파일의 secrets
섹션에서 외부로 생성된 시크릿을 참조하고 있습니다.
이렇게 생성된 configs 및 secrets는 Swarm 클러스터에서 안전하게 분배되며, 서비스는 각각의 설정과 비밀 정보에 접근할 수 있습니다. 이를 통해 보안을 강화하고 유지 관리를 더욱 편리하게 할 수 있습니다.
Docker Swarm의 configs
와 secrets
는 각각 별도의 위치에서 보관되고 관리됩니다.
Docker Configs
configs
는 Docker Swarm의 관리된 서비스에서 사용됩니다. 이러한 설정은 Swarm의 데이터 저장소 내에서 안전하게 저장됩니다. 기본적으로 /var/lib/docker/swarm/configs
디렉토리에 저장되며, 이 디렉토리는 Docker에 의해 관리됩니다. 직접적으로 이 디렉토리를 수정하거나 삭제하는 것은 권장되지 않습니다.
Docker Secrets
secrets
또한 Docker Swarm의 데이터 저장소에서 안전하게 저장됩니다. 기본적으로 /var/lib/docker/swarm/secrets
디렉토리에 저장되며, Docker에 의해 관리됩니다. 직접적으로 이 디렉토리를 수정하거나 삭제하는 것은 권장되지 않습니다.
변경 및 업데이트
일반적으로 docker-compose.yml
파일을 수정하고 변경된 설정을 적용하는 방법을 사용합니다. 변경된 설정을 적용하려면 다음과 같은 단계를 따릅니다.
- Compose 파일 수정
docker-compose.yml
파일을 편집하여 변경된 값을 업데이트합니다. - 서비스 재시작 또는 재배포
변경된docker-compose.yml
파일을 사용하여 서비스를 다시 시작하거나 재배포합니다. 아래와 같은 명령어를 사용할 수 있습니다.
또는 개별 서비스에 대한 경우:docker-compose up -d
docker stack deploy -c docker-compose.yml my_stack
- 자동 갱신
Swarm에서는 설정이나 시크릿이 변경되면 자동으로 갱신되지 않습니다. 따라서 서비스가 재시작되거나 재배포되어야 새로운 설정이나 시크릿이 반영됩니다. - External 설정 또는 시크릿 사용
변경 가능한 값들은 외부에서 관리되는 설정 파일이나 시크릿을 사용하여 설정할 수 있습니다. 이렇게 하면 변경이 필요할 때 외부에서 수정하고 Swarm 클러스터에 자동으로 적용됩니다.
주의: Swarm 모드에서만 configs
와 secrets
가 사용 가능하므로, 일반적인 Docker Compose 환경에서는 이러한 기능을 사용할 수 없습니다.
댓글