docker context는 로컬 개발 환경, 원격 서버, Docker Swarm 클러스터 또는 Kubernetes와 같이 서로 다른 Docker 실행 환경을 효율적으로 관리하고 전환할 수 있게 해주는 기능입니다. 이를 통해 개발자는 터미널 하나에서 여러 인프라 환경을 안전하게 격리하고 빠르게 오가며 작업할 수 있습니다.
1. 전체 컨텍스트 목록 확인 (조회)
현재 구성된 모든 컨텍스트와 연결 상태를 확인하려면 다음 명령어를 사용합니다.
docker context ls
이 명령을 실행하면 사용 가능한 환경 목록이 출력됩니다. 현재 활성화된 환경 옆에는 별표(*) 기호가 표시되어 현재 어떤 Docker 엔진에 명령이 전달되는지 쉽게 알 수 있습니다.
2. 새로운 환경 설정 추가 (생성)
대상 환경의 프로토콜에 따라 다양한 방식으로 컨텍스트를 생성할 수 있습니다.
- 원격 서버 연결 (SSH 권장): 가장 안전한 방식으로, SSH를 통해 원격지의 Docker 데몬에 접근합니다.
docker context create prod-server --docker "host=ssh://deploy-user@1.2.3.4"
- TCP 방식 연결: 특정 포트(예: 2375)가 개방된 원격 호스트에 연결합니다. (보안 설정이 필요합니다.)
docker context create staging-env --docker "host=tcp://staging.example.com:2375"
- Kubernetes 환경 통합: 기존의 kubectl 설정을 기반으로 Docker 컨텍스트를 생성할 수 있습니다.
docker context create my-k8s-context --kubernetes
3. 활성 컨텍스트 전환 (변경)
특정 환경으로 연결 대상을 변경하면 이후 실행되는 docker ps, docker run 등의 모든 명령어가 해당 대상 서버에서 수행됩니다.
docker context use prod-server
4. 기존 컨텍스트 정보 수정 (업데이트)
이미 생성된 컨텍스트의 연결 주소나 사용자 정보를 변경해야 할 경우 update 명령을 사용합니다.
docker context update prod-server --docker "host=ssh://admin-user@5.6.7.8"
5. 컨텍스트 삭제 (제거)
더 이상 사용하지 않는 환경 설정은 다음과 같이 제거할 수 있습니다.
docker context rm prod-server
참고로, 현재 사용 중인 활성 컨텍스트를 삭제하면 Docker 클라이언트는 자동으로 default 컨텍스트로 돌아갑니다.
이러한 docker context 기능을 활용하면 환경 변수를 수동으로 변경하거나 별도의 별칭(alias)을 설정할 필요 없이, 복잡한 인프라 환경을 직관적이고 안전하게 제어할 수 있습니다.