Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

유비무환

Docker Config, Secret 본문

IT/도커

Docker Config, Secret

키다리병장 2022. 3. 2. 22:12

Docker Config, Secret 란?

config 나 secret 은 스웜 서비스에서 사용 가능한 방식으로 이미지나 컨테이너 외부에 파일을 저장하는 방식을 의미합니다. 두 방식 모두 서비스에 자유롭게 추가하거나 제거할 수 있습니다.

 

스웜에 config 나 secret을 추가하게 되면 도커가 TLS 연결을 통해서 해당 파일을 스웜 관리자에게 보냅니다.  이렇게 보내진 파일을 Raft 로그에 저장되고, 해당 로그는 암호화됩니다.

※ Raft 알고리즘 : 분산 시스템 내에서 합의 과정 중에 발생할 수 있는 문제를 해결하기 위한 알고리즘의 한 종류

 

Config

config는 레지스트리나 구성 파일과 같이 암호화가 필요하지 않은 정보를 저장하는 방식을 의미합니다.

 

// config 생성

echo "This is a config" | docker config create my-config -

// 생성된 config 확인

docker config ls
 

 

// config 정보 확인

docker config inspect my-config
 

Spec에 존재하는 Data는 Base64 인코딩 된 값으로 디코딩을 통해 확인할 수 있습니다.

 

// Base64 디코딩

echo VGhpcyBpcyBhIGNvbmZpZwo= | base64 -d
 

 

// config를 사용해서 서비스 생성

docker service create --name redis --config my-config redis:alpine
 

 

// 컨테이너에 있는 config의 내용을 확인

docker exec -it {container_id} sh
cat /my-config
 

 

config는 기본적으로 컨테이너 내부의 /<config-name>에 마운트 됩니다.

 

// 서비스 update를 통해 config를 추가

docker service update \
--config-add source=test-config,target=/etc/configs/test-config \
redis

cat /etc/configs/test-config
 

 

// config 삭제

docker config rm test-config
 

test-config를 사용하고 있는 서비스가 존재하기 때문에 config를 삭제할 수 없습니다.

 

// 서비스에서 config 제거

docker service update --config-rm test-config redis
 

 

서비스에서 test-config 를 제거하고 다시 삭제를 시도하면 config 가 제거됩니다.

 

또는 서비스 자체를 제거하고 config 를 삭제할 수도 있습니다.

docker service rm redis
 

 

// Rotate a config

docker service update \
--config-rm A.config \
--config-add B.config \
redis​

 

Secret

비밀번호나 SSH 키, 인증서 키와 같이 보안에 민감한 데이터를 전송하기 위해서 사용됩니다. 

 

// secret 생성

echo "This is a secret" | docker secret create my_secret -
 

 

// 생성된 secret 확인

docker secret ls
 

 

// secret 정보 확인

docker secret inspect my_secret
 

config와 달리 Spec에 Data 항목이 존재하지 않습니다.

 

// secret를 사용해서 서비스 생성

docker service create --name redis2 --secret my_secret redis:alpine
 

// 컨테이너에 있는 secret의 내용을 확인

docker exec -it {container_id} sh
cat /run/secrets/my_secret
 

secret 은 기본적으로 컨테이너 내부의 /run/secrets/<secret_name>에 마운트 됩니다.

 

// secret 삭제

docker secret rm my_secret
 

my_secret을 사용하고 있는 서비스가 존재하기 때문에 secret 을 삭제할 수 없습니다.

 

// 서비스에서 secret 제거

docker service update --secret-rm my_secret redis2
 

 

서비스에서 my_secret 을 제거하고 다시 삭제를 시도하면 secret 이 제거됩니다.

 

또는 서비스 자체를 제거하고 secret 을 삭제할 수도 있습니다.

docker service rm redis2

 

// secret 생성

echo qwe123 | docker secret create mysql_password -

 

// mysql 서비스 생성

docker service create \
    --name mysql \
    --replicas 1 \
    --secret source=mysql_password,target=mysql_root_password \
    --secret source=mysql_password,target=mysql_password \
    -e MYSQL_ROOT_PASSWORD_FILE="/run/secrets/mysql_root_password" \
    -e MYSQL_PASSWORD_FILE="/run/secrets/mysql_password" \
    -e MYSQL_DATABASE="test" \
    mysql:latest
 

 

// mysql 접속 후 database 확인

mysql -u root -p
Enter password: qwe123

참고

https://book.naver.com/bookdb/book_detail.naver?bid=16850447 

 

도커/쿠버네티스

쿠버네티스와 도커의 기본 사용 방법을 정확히 이해하는 것을 목표로 합니다!도커 컨테이너는 애플리케이션을 배포하기 위한 새로운 패러다임을 제시하는 가상화 패러다임입니다. 컨테이너 자

book.naver.com

 

 

'IT > 도커' 카테고리의 다른 글

Docker Desktop 설치 실패 이슈  (0) 2022.03.04
도커 네트워크  (0) 2021.10.26
Comments