SlideShare a Scribd company logo
1 of 21
Download to read offline
안전하게 도커 원격
작업하기
Protect the Docker Daemon Socket
https://github.jholee.kr
jho.lee@kakao.com
github.jholee.kr
0. 준비
• 도커 데몬이 설치되어 있는 서버 🐳🖥
• (예시: Ubuntu 18.04LTS, Docker > 19.03)
• 도커 클라이언트가 설치되어 있는 클라이언트 💻
• (예시: OS X 10.15.3, Docker > 19.03)
github.jholee.kr
필요한 것
0. 준비
• 서버에서 해야하는 작업일 경우에는 고래 🐳가
나타납니다.
• 클라이언트에서 해야하는 작업일 경우에는
노트북 💻이 나타납니다.
github.jholee.kr
여기에서는…
1. CA 인증서
서버와 클라이언트 중간에서 인증 기관이 될, CA(Certificate Authority) 인증서의 key 파일을 생성해줍니다.
기억할 수 있는 암호문을 입력해주세요.
github.jholee.kr
CA key 파일 생성
1. CA 인증서
방금 입력했던 암호문을 입력해주세요.
그 후 인증서 정보 입력란에 다른 값은 괜찮으나, $HOST 부분에는 꼭! 사용할 도메인 혹은 ip 주소를 넣어주세요.
CA의 key와 cert 파일이 생성되었습니다.
github.jholee.kr
CA cert 파일 생성
2. Server 인증서
이번에는 Server 인증서를 생성합니다.
먼저 Key 파일을 만들어주세요.
github.jholee.kr
Server key 생성
2. Server 인증서
CA에 인증서 발급 신청 서류가 되는 csr 파일과 기타 정보들을 포함한 extfile.cnf 를 생성해주세요.
앞에서와 마찬가지로 Docker Remote API를 이용할 도메인을 $HOST부분에 넣어주시고,
도메인 외에 ip로도 접속하신다면 해당 ip 주소도 적어주세요.
github.jholee.kr
Server csr 및 기타 설정 파일 생성
2. Server 인증서
생성한 server.csr과 ca.pem, ca-key.pem 을 기반으로 Server cert 파일을 생성합니다.
CA key 생성 시에 넣었던 암호문이 필요해요.
여기까지 하면 ca.pem, ca-key.pem, server-key.pem, server-cert.pem 이 생성됩니다.
github.jholee.kr
Server cert파일 생성
3. Client 인증서
이번에는 client 인증서 파일들을 생성합니다.
Server 관련 파일들을 생성할 때와 과정은 유사해요.
github.jholee.kr
Client key 생성
3. Client 인증서
이번에는 도메인 이름을 넣는 대신, client라는 이름을 넣어서 client임을 알려줍니다.
github.jholee.kr
Client csr 및 기타 설정 파일 생성
3. Client 인증서
client 인증서 파일들도 모두 만들었습니다!
github.jholee.kr
Client cert 파일 생성
4. 생성 마무리
테스트를 해보죠.
dockerd 명령이 안될 경우에는, docker -d 를 대신 넣어주세요.
github.jholee.kr
테스트
…
4. 생성 마무리
실행이 잘 되었다면, 인증서 생성에 사용하였던 재료들은 모두 제거해주세요.
그리고 cert 파일들은 사용자 관계없이 읽을 수 있도록 권한 설정 해주시고, key 파일들은 나만이 읽을 수 있도록 설정해주세요.
github.jholee.kr
설정에 사용된 파일들 제거, key&cert 파일 보호 설정
4. 생성 마무리
docker --help 를 입력하시면, 위와 같이 나옵니다. 여기에서 인증서 파일의 기본 위치를 확인해주세요.
github.jholee.kr
인증서 저장할 위치 확인
4. 생성 마무리
이제 앞에서 생성한 파일들을 서버와 클라이언트에 나눠주세요.
ca.pem은 모두 사용하며, cert.pem과 key.pem은 각각 자신의 것을 사용합니다.
$DOCKER_CERT는 임의로 지정 가능합니다.
앞서 docker 도움말에서 확인하였던 기본 디렉토리에 두시는 것보다, 직접 지정해주시는 것을 추천합니다.
Server Client
ca (공통) $DOCKER_CERT/ca.pem ~/.docker/ca.pem
cert $DOCKER_CERT/server-cert.pem ~/.docker/cert.pem
key $DOCKER_CERT/server-key.pem ~/.docker/key.pem
github.jholee.kr
인증서 파일 분배
5. 서버 도커 데몬 설정
/lib/systemd/system/docker.service 에서 execStart의 내용을 위와 같이 추가해주세요. (노란 박스 부분)
기본 디렉토리에 서버 인증서 파일을 저장하신 경우에는 --tlsverify 와 -H tcp://$HOST:2376 만 추가해도 됩니다.
github.jholee.kr
데몬 서비스 파일 수정
5. 서버 도커 데몬 설정
Ubuntu 서버 기준, 수정한 docker.service의 반영을 위해 다음 명령어들을 실행해주세요.
sudo systemctl daemon-reload
sudo systemctl restart docker
github.jholee.kr
도커 데몬 재시작
7. 클라이언트 설정
클라이언트에 ca.pem, cert.pem, key.pem을 복사해줍니다.
(기본 위치 추천)
github.jholee.kr
인증서 복사
7. 클라이언트 설정
Docker Remote API 의 사용을 강제하면, VS Code 연동 시에 별다른 설정 없이 로컬에서 사용하는 것처럼 바로 사용 가능합니다.
~/.bashrc (or ~/.zshrc or …) 에서 위 문장들을 추가해줍니다.
(이 과정을 하지 않으면, 매 접속 시에 -H $HOST 과 --tlsverify 옵션을 넣어주어야 합니다.)
github.jholee.kr
(옵션) Docker Remote API 사용 강제하기
7. 클라이언트 설정
docker ps -a 를 입력해 테스트해봅시다.
서버 내 도커에서 실행되는 프로세스 목록이 뜬다면 성공입니다.
(인증서 파일들이 기본 위치에 있지 않은 경우, --tlscert, --tlskey 등의 명령어와 함께 직접 파일 위치를 지정해주어야 합니다.
github.jholee.kr
Docker 접속!
-1. Reference
• https://docs.docker.com/engine/security/https/
github.jholee.kr

More Related Content

What's hot

Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google KubernetesYongbok Kim
 
cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급choi sungwook
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기
Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기
Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기sibalmonkeys
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기pyrasis
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurationsJohn Kim
 
Browser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdfBrowser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdfHo Jeong Im
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XpressEngine
 
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기Wooyoung Ko
 
Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)TaekSoon Jang
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치Lee Seungeun
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bashpyrasis
 

What's hot (15)

Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google Kubernetes
 
cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급cert-manager로 let's encrypt 인증서 발급
cert-manager로 let's encrypt 인증서 발급
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기
Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기
Linux Ubuntu 9.10 Desktop 에서 Elgg 설치하기
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
 
Browser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdfBrowser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdf
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
리스펙토링 세미나 - 나만의 카카오 챗봇 만들기
 
Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)Db프로그래밍 환경 설정(131062 장택순)
Db프로그래밍 환경 설정(131062 장택순)
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치랩탑으로 tensorflow 도전하기 - tensorflow 설치
랩탑으로 tensorflow 도전하기 - tensorflow 설치
 
Dockerfile과 Bash
Dockerfile과 BashDockerfile과 Bash
Dockerfile과 Bash
 

Similar to Enable the Docker Remote API with Secure Connection! (안전하게 도커 원격 작업하기)

Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxwonyong hwang
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea CloudJude Kim
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014Gruter
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제choi sungwook
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드수정 김
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxwonyong hwang
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드Devgear
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Weblogic install
Weblogic installWeblogic install
Weblogic installSukjin Yun
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료TIMEGATE
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guideseungdon Choi
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Park JoongSoo
 

Similar to Enable the Docker Remote API with Secure Connection! (안전하게 도커 원격 작업하기) (20)

Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Clouddocker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
docker on GCE ( JIRA & Confluence ) - GDG Korea Cloud
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
Hadoop security DeView 2014
Hadoop security DeView 2014Hadoop security DeView 2014
Hadoop security DeView 2014
 
nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제nexus helm 설치, docker/helm repo 설정과 예제
nexus helm 설치, docker/helm repo 설정과 예제
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
Yeoman(모던웹 개발을 위한 관리도구)설치사용가이드
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Ngrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptxNgrok을 이용한 Nginx Https 적용하기.pptx
Ngrok을 이용한 Nginx Https 적용하기.pptx
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Weblogic install
Weblogic installWeblogic install
Weblogic install
 
하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료하이퍼레저 패브릭 실습자료
하이퍼레저 패브릭 실습자료
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
PCF Installation Guide
PCF Installation GuidePCF Installation Guide
PCF Installation Guide
 
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
Jenkins와 Gitlab으로 쉽고 빠르게 구축하는 협업시스템
 

Enable the Docker Remote API with Secure Connection! (안전하게 도커 원격 작업하기)

  • 1. 안전하게 도커 원격 작업하기 Protect the Docker Daemon Socket https://github.jholee.kr jho.lee@kakao.com github.jholee.kr
  • 2. 0. 준비 • 도커 데몬이 설치되어 있는 서버 🐳🖥 • (예시: Ubuntu 18.04LTS, Docker > 19.03) • 도커 클라이언트가 설치되어 있는 클라이언트 💻 • (예시: OS X 10.15.3, Docker > 19.03) github.jholee.kr 필요한 것
  • 3. 0. 준비 • 서버에서 해야하는 작업일 경우에는 고래 🐳가 나타납니다. • 클라이언트에서 해야하는 작업일 경우에는 노트북 💻이 나타납니다. github.jholee.kr 여기에서는…
  • 4. 1. CA 인증서 서버와 클라이언트 중간에서 인증 기관이 될, CA(Certificate Authority) 인증서의 key 파일을 생성해줍니다. 기억할 수 있는 암호문을 입력해주세요. github.jholee.kr CA key 파일 생성
  • 5. 1. CA 인증서 방금 입력했던 암호문을 입력해주세요. 그 후 인증서 정보 입력란에 다른 값은 괜찮으나, $HOST 부분에는 꼭! 사용할 도메인 혹은 ip 주소를 넣어주세요. CA의 key와 cert 파일이 생성되었습니다. github.jholee.kr CA cert 파일 생성
  • 6. 2. Server 인증서 이번에는 Server 인증서를 생성합니다. 먼저 Key 파일을 만들어주세요. github.jholee.kr Server key 생성
  • 7. 2. Server 인증서 CA에 인증서 발급 신청 서류가 되는 csr 파일과 기타 정보들을 포함한 extfile.cnf 를 생성해주세요. 앞에서와 마찬가지로 Docker Remote API를 이용할 도메인을 $HOST부분에 넣어주시고, 도메인 외에 ip로도 접속하신다면 해당 ip 주소도 적어주세요. github.jholee.kr Server csr 및 기타 설정 파일 생성
  • 8. 2. Server 인증서 생성한 server.csr과 ca.pem, ca-key.pem 을 기반으로 Server cert 파일을 생성합니다. CA key 생성 시에 넣었던 암호문이 필요해요. 여기까지 하면 ca.pem, ca-key.pem, server-key.pem, server-cert.pem 이 생성됩니다. github.jholee.kr Server cert파일 생성
  • 9. 3. Client 인증서 이번에는 client 인증서 파일들을 생성합니다. Server 관련 파일들을 생성할 때와 과정은 유사해요. github.jholee.kr Client key 생성
  • 10. 3. Client 인증서 이번에는 도메인 이름을 넣는 대신, client라는 이름을 넣어서 client임을 알려줍니다. github.jholee.kr Client csr 및 기타 설정 파일 생성
  • 11. 3. Client 인증서 client 인증서 파일들도 모두 만들었습니다! github.jholee.kr Client cert 파일 생성
  • 12. 4. 생성 마무리 테스트를 해보죠. dockerd 명령이 안될 경우에는, docker -d 를 대신 넣어주세요. github.jholee.kr 테스트 …
  • 13. 4. 생성 마무리 실행이 잘 되었다면, 인증서 생성에 사용하였던 재료들은 모두 제거해주세요. 그리고 cert 파일들은 사용자 관계없이 읽을 수 있도록 권한 설정 해주시고, key 파일들은 나만이 읽을 수 있도록 설정해주세요. github.jholee.kr 설정에 사용된 파일들 제거, key&cert 파일 보호 설정
  • 14. 4. 생성 마무리 docker --help 를 입력하시면, 위와 같이 나옵니다. 여기에서 인증서 파일의 기본 위치를 확인해주세요. github.jholee.kr 인증서 저장할 위치 확인
  • 15. 4. 생성 마무리 이제 앞에서 생성한 파일들을 서버와 클라이언트에 나눠주세요. ca.pem은 모두 사용하며, cert.pem과 key.pem은 각각 자신의 것을 사용합니다. $DOCKER_CERT는 임의로 지정 가능합니다. 앞서 docker 도움말에서 확인하였던 기본 디렉토리에 두시는 것보다, 직접 지정해주시는 것을 추천합니다. Server Client ca (공통) $DOCKER_CERT/ca.pem ~/.docker/ca.pem cert $DOCKER_CERT/server-cert.pem ~/.docker/cert.pem key $DOCKER_CERT/server-key.pem ~/.docker/key.pem github.jholee.kr 인증서 파일 분배
  • 16. 5. 서버 도커 데몬 설정 /lib/systemd/system/docker.service 에서 execStart의 내용을 위와 같이 추가해주세요. (노란 박스 부분) 기본 디렉토리에 서버 인증서 파일을 저장하신 경우에는 --tlsverify 와 -H tcp://$HOST:2376 만 추가해도 됩니다. github.jholee.kr 데몬 서비스 파일 수정
  • 17. 5. 서버 도커 데몬 설정 Ubuntu 서버 기준, 수정한 docker.service의 반영을 위해 다음 명령어들을 실행해주세요. sudo systemctl daemon-reload sudo systemctl restart docker github.jholee.kr 도커 데몬 재시작
  • 18. 7. 클라이언트 설정 클라이언트에 ca.pem, cert.pem, key.pem을 복사해줍니다. (기본 위치 추천) github.jholee.kr 인증서 복사
  • 19. 7. 클라이언트 설정 Docker Remote API 의 사용을 강제하면, VS Code 연동 시에 별다른 설정 없이 로컬에서 사용하는 것처럼 바로 사용 가능합니다. ~/.bashrc (or ~/.zshrc or …) 에서 위 문장들을 추가해줍니다. (이 과정을 하지 않으면, 매 접속 시에 -H $HOST 과 --tlsverify 옵션을 넣어주어야 합니다.) github.jholee.kr (옵션) Docker Remote API 사용 강제하기
  • 20. 7. 클라이언트 설정 docker ps -a 를 입력해 테스트해봅시다. 서버 내 도커에서 실행되는 프로세스 목록이 뜬다면 성공입니다. (인증서 파일들이 기본 위치에 있지 않은 경우, --tlscert, --tlskey 등의 명령어와 함께 직접 파일 위치를 지정해주어야 합니다. github.jholee.kr Docker 접속!