일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도커
- docker
- Unity
- c#
- c# 추상 클래스
- c언어
- c# 윈폼
- dart 언어
- c# winform
- C++
- 포인터
- gitlab
- github
- C# delegate
- jupyter
- vim
- Algorithm
- 유니티
- 구조체
- HTML
- jupyter lab
- 플러터
- Python
- git
- C언어 포인터
- Data Structure
- Houdini
- Flutter
- 깃
- 다트 언어
- Today
- Total
nomad-programmer
[DevOps/Docker] Docker Credential Pass 설정 (feat. RockyLinux9) 본문
Docker Hub (https://app.docker.com/) 에 push & pull 을 하려면, 먼저 로그인을 해야 한다. 따라서 다음과 같이 로그인을 진행할 것이다.
$ docker login
위의 명령을 실행하면 ID & Password를 입력하라고 나온다. 계정 정보가 맞다면 로그인이 될텐데.. 그러면, `$HOME/.docker/config.json` 파일에 해당 비밀번호가 base64로 인코딩 돼어 다음과 같이 입력된다.
{
"auths" {
"https://index.docker.io/v1/: {
"author": "<base64로 인코딩 된 암호>"
}
}
}
이곳에 비밀번호가 자동으로 들어가는 이유는, 다음 login할 때 조금 더 편하게 로그인하기 위함이다. 이것이 장점이 될 수 있지만 단점이 될 수 있다. 그것도 아주 치명적으로...
이것이 왜 치명적인 단점이냐면, config.json에 적힌 비밀번호를 decoding 해주면 비밀번호가 나오기 때문이다. 이렇게...
$ echo <base64로 인코딩 된 암호> | base64 --decode
그래서 사용해야 한다. docker-credential-pass를!
Docker Credential Pass 란?
docker login 명령으로 credential한 정보가 평문으로 저장되는 것이 아닌 credential storage를 이용해 암호화한 정보로 저장될 수 있도록 도와준다.
https://github.com/docker/docker-credential-helpers
따라서 사용하지 않을 이유가 없다.
Docker Credential Pass 적용 방법
저자는 rocky linux 9에서 진행하였다.
1. pass 설치
먼저 pass 패키지를 설치해야 한다. pass는 linux에서 패스워드를 안전하게 관리하는 유틸리티이다.
sudo dnf install pass
2. GPG 키 생성
pass는 GPG 키를 사용해 비밀번호를 암호화한다. 그래서 먼저 GPG 키를 생성해야 한다.
gpg --generate-key
키 생성 과정에서 이름, 이메일, 암호 등을 입력하라고 할 것이다. 원하는 정보를 입력하고 키 생성을 한다.
3. pass 초기화
GPG 키 생성 후, pass를 초기화한다. 초기화할 때, GPG 키의 이메일 주소를 사용한다.
pass init "이메일 주소"
4. docker-credential-pass 설치
docker에서 pass를 credential store로 사용하기 위해 docker-credential-pass를 설치해야 한다. 다음의 링크를 통해 다운 받도록 하자.
https://github.com/docker/docker-credential-helpers/releases
저자는 여기서 "docker-credential-pass-v0.8.2.linux-amd64" 이것을 다운 받았다. (현재 기준 최신 버전이 0.8.2 라서 이것을 받음)
다음의 명령들을 통하여 시스템에서 사용할 수 있도록 만들자.
chmod +x docker-credential-pass-v0.8.2.linux-amd64
sudo mv docker-credential-pass-v0.8.2.linux-amd64 /usr/local/bin/docker-credential-pass
5. Docker 설정
docker의 설정 파일인 $HOME/.docker/config.json 파일을 열고, 다음과 같이 수정하자. 또한 docker에 login이 되어 있다면 logout부터 진행하고 하는 것이 좋을 것이다.
docker logout
로그아웃을 했다면 $HOME/.docker/config.json 파일을 아래와 같이 입력한 후 저장한다.
{
"credsStore": "pass"
}
6. Docker Login
이제 docker에 다시 로그인하여 credential이 안전하게 저장되는 지 확인한다.
docker login
추가로, docker-credential-pass가 잘 관리하고 싶은지 확인하고 싶다면, 다음과 같은 명령을 통해 확인할 수 있다.
docker-credential-pass list
그러면 관리중인 목록을 볼 수 있다.
'DevOps > Docker' 카테고리의 다른 글
[DevOps/Docker] Failed to initialize NVML: Unknown Error (0) | 2024.08.15 |
---|---|
[DevOps/Docker] mail 서버 설정 (0) | 2023.10.15 |
[DevOps/Docker] Portainer (도커와 쿠버네티스 관리를 쉽게) (0) | 2023.08.27 |
[DevOps/Docker] 명령어 및 옵션 목록 (0) | 2020.12.14 |
[DevOps/Docker] 분산 환경에서의 컨테이너 운용 관리 (0) | 2020.12.10 |